From 29715965e8b3bb6eb4a588c0e258180230c43b18 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Sat, 8 Aug 2026 19:19:01 +0000 Subject: [PATCH 1/2] [patch] Publish customer API reference --- api/reference/append_task_log.mdx | 4 - api/reference/check_convergence.mdx | 4 - api/reference/check_site_domain.mdx | 4 + api/reference/create_account.mdx | 4 - api/reference/delete_account.mdx | 4 - api/reference/generate_terraform_vars.mdx | 4 - api/reference/get_account.mdx | 4 - api/reference/get_account_by_email.mdx | 4 +- api/reference/get_blob.mdx | 4 - api/reference/get_reconciliation_run.mdx | 4 - api/reference/get_site_domain.mdx | 4 + api/reference/get_site_firewall.mdx | 4 - api/reference/get_site_secrets.mdx | 4 - api/reference/get_site_sshkeys.mdx | 4 - api/reference/introduction.mdx | 10 +- api/reference/list_account_projects.mdx | 4 - api/reference/list_account_repositories.mdx | 4 - api/reference/list_accounts.mdx | 4 - api/reference/list_all_projects.mdx | 4 - api/reference/list_all_sites.mdx | 4 - api/reference/openapi.yaml | 28835 ++++++---------- .../retry_site_domain_provisioning.mdx | 4 + api/reference/site_check_in.mdx | 4 - api/reference/sync_manifest.mdx | 4 - api/reference/update_account.mdx | 4 - .../update_reconciliation_status.mdx | 4 - docs.json | 6 +- platform/api-cli.mdx | 6 +- 28 files changed, 11423 insertions(+), 17530 deletions(-) delete mode 100644 api/reference/append_task_log.mdx delete mode 100644 api/reference/check_convergence.mdx create mode 100644 api/reference/check_site_domain.mdx delete mode 100644 api/reference/create_account.mdx delete mode 100644 api/reference/delete_account.mdx delete mode 100644 api/reference/generate_terraform_vars.mdx delete mode 100644 api/reference/get_account.mdx delete mode 100644 api/reference/get_blob.mdx delete mode 100644 api/reference/get_reconciliation_run.mdx create mode 100644 api/reference/get_site_domain.mdx delete mode 100644 api/reference/get_site_firewall.mdx delete mode 100644 api/reference/get_site_secrets.mdx delete mode 100644 api/reference/get_site_sshkeys.mdx delete mode 100644 api/reference/list_account_projects.mdx delete mode 100644 api/reference/list_account_repositories.mdx delete mode 100644 api/reference/list_accounts.mdx delete mode 100644 api/reference/list_all_projects.mdx delete mode 100644 api/reference/list_all_sites.mdx create mode 100644 api/reference/retry_site_domain_provisioning.mdx delete mode 100644 api/reference/site_check_in.mdx delete mode 100644 api/reference/sync_manifest.mdx delete mode 100644 api/reference/update_account.mdx delete mode 100644 api/reference/update_reconciliation_status.mdx diff --git a/api/reference/append_task_log.mdx b/api/reference/append_task_log.mdx deleted file mode 100644 index 34fb4e1..0000000 --- a/api/reference/append_task_log.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Append a structured log entry to a task. [Requires: write:organization]' -openapi: 'POST /libops.v1.TaskService/AppendTaskLog' ---- diff --git a/api/reference/check_convergence.mdx b/api/reference/check_convergence.mdx deleted file mode 100644 index cb49d6b..0000000 --- a/api/reference/check_convergence.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'CheckConvergence' -openapi: 'POST /libops.v1.AdminConvergenceService/CheckConvergence' ---- diff --git a/api/reference/check_site_domain.mdx b/api/reference/check_site_domain.mdx new file mode 100644 index 0000000..8a14934 --- /dev/null +++ b/api/reference/check_site_domain.mdx @@ -0,0 +1,4 @@ +--- +title: 'CheckSiteDomain' +openapi: 'POST /libops.v1.DomainService/CheckSiteDomain' +--- diff --git a/api/reference/create_account.mdx b/api/reference/create_account.mdx deleted file mode 100644 index e6bef72..0000000 --- a/api/reference/create_account.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Create a new account [Requires: admin:system]' -openapi: 'POST /libops.v1.AdminAccountService/CreateAccount' ---- diff --git a/api/reference/delete_account.mdx b/api/reference/delete_account.mdx deleted file mode 100644 index fd57751..0000000 --- a/api/reference/delete_account.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Delete an account [Requires: admin:system]' -openapi: 'POST /libops.v1.AdminAccountService/DeleteAccount' ---- diff --git a/api/reference/generate_terraform_vars.mdx b/api/reference/generate_terraform_vars.mdx deleted file mode 100644 index 9fdf039..0000000 --- a/api/reference/generate_terraform_vars.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Generate terraform variables JSON from database state' -openapi: 'GET /libops.v1.AdminReconciliationService/GenerateTerraformVars' ---- diff --git a/api/reference/get_account.mdx b/api/reference/get_account.mdx deleted file mode 100644 index 7da43e6..0000000 --- a/api/reference/get_account.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Get account information by ID [Requires: admin:system]' -openapi: 'GET /libops.v1.AdminAccountService/GetAccount' ---- diff --git a/api/reference/get_account_by_email.mdx b/api/reference/get_account_by_email.mdx index ebbeb46..91719c6 100644 --- a/api/reference/get_account_by_email.mdx +++ b/api/reference/get_account_by_email.mdx @@ -1,4 +1,4 @@ --- -title: 'Get account information by email [Requires: admin:system]' -openapi: 'GET /libops.v1.AdminAccountService/GetAccountByEmail' +title: 'Get account information by email (for Terraform provider lookups) [Requires: read:user]' +openapi: 'GET /libops.v1.AccountService/GetAccountByEmail' --- diff --git a/api/reference/get_blob.mdx b/api/reference/get_blob.mdx deleted file mode 100644 index 620deec..0000000 --- a/api/reference/get_blob.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Get blob content via signed GCS URL (optional - VMs can fetch directly from GCS)' -openapi: 'GET /libops.v1.AdminSiteService/GetBlob' ---- diff --git a/api/reference/get_reconciliation_run.mdx b/api/reference/get_reconciliation_run.mdx deleted file mode 100644 index 5954a56..0000000 --- a/api/reference/get_reconciliation_run.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Get reconciliation run details from control-plane database' -openapi: 'GET /libops.v1.AdminReconciliationService/GetReconciliationRun' ---- diff --git a/api/reference/get_site_domain.mdx b/api/reference/get_site_domain.mdx new file mode 100644 index 0000000..ba1f193 --- /dev/null +++ b/api/reference/get_site_domain.mdx @@ -0,0 +1,4 @@ +--- +title: 'GetSiteDomain' +openapi: 'GET /libops.v1.DomainService/GetSiteDomain' +--- diff --git a/api/reference/get_site_firewall.mdx b/api/reference/get_site_firewall.mdx deleted file mode 100644 index cac61b9..0000000 --- a/api/reference/get_site_firewall.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Get firewall rules for a site VM (called by VM controller with GSA auth)' -openapi: 'GET /libops.v1.AdminSiteService/GetSiteFirewall' ---- diff --git a/api/reference/get_site_secrets.mdx b/api/reference/get_site_secrets.mdx deleted file mode 100644 index c588d6a..0000000 --- a/api/reference/get_site_secrets.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Get secrets for a site VM (called by VM controller with GSA auth)' -openapi: 'GET /libops.v1.AdminSiteService/GetSiteSecrets' ---- diff --git a/api/reference/get_site_sshkeys.mdx b/api/reference/get_site_sshkeys.mdx deleted file mode 100644 index f68adc2..0000000 --- a/api/reference/get_site_sshkeys.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Get SSH keys for a site VM (called by VM controller with GSA auth)' -openapi: 'GET /libops.v1.AdminSiteService/GetSiteSSHKeys' ---- diff --git a/api/reference/introduction.mdx b/api/reference/introduction.mdx index 90cab17..be78e60 100644 --- a/api/reference/introduction.mdx +++ b/api/reference/introduction.mdx @@ -7,6 +7,8 @@ description: 'LibOps API Reference' The LibOps API gives teams programmatic access to the platform. It is the same operational model exposed through the dashboard and `sitectl`, available for automation, governance, reporting, and integration work. +This reference covers the customer-facing API. LibOps administrative and control-plane RPCs are intentionally omitted from the published OpenAPI document and navigation. + Use the API to manage: - Organizations. @@ -25,12 +27,12 @@ Use the API to manage: icon="code" href="/api/reference/openapi.yaml" > - View the full OpenAPI specification file. + View the complete customer OpenAPI specification file. ## Why It Matters -LibOps is designed to make open-source application operations repeatable. A full API means the platform can fit into your existing institutional workflows instead of forcing every task through a UI. +LibOps is designed to make open-source application operations repeatable. A stable customer API means the platform can fit into your existing institutional workflows instead of forcing every task through a UI. Teams can connect LibOps to internal provisioning flows, service catalogs, access reviews, reporting tools, or custom automation while preserving the same organization, project, site, secret, firewall, member, and deployment model. @@ -47,9 +49,11 @@ Authorization: Bearer The base URL for the API is: ```text -https://api.libops.io/v1 +https://api.libops.io ``` +Append the ConnectRPC operation path shown on each reference page, such as `/libops.v1.SiteService/CreateSite`. + ## Response Format All responses are returned in JSON format. diff --git a/api/reference/list_account_projects.mdx b/api/reference/list_account_projects.mdx deleted file mode 100644 index 4b0421b..0000000 --- a/api/reference/list_account_projects.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'List projects for an account [Requires: admin:system]' -openapi: 'GET /libops.v1.AdminAccountService/ListAccountProjects' ---- diff --git a/api/reference/list_account_repositories.mdx b/api/reference/list_account_repositories.mdx deleted file mode 100644 index f27e165..0000000 --- a/api/reference/list_account_repositories.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'List repositories for an account [Requires: admin:system]' -openapi: 'GET /libops.v1.AdminAccountService/ListAccountRepositories' ---- diff --git a/api/reference/list_accounts.mdx b/api/reference/list_accounts.mdx deleted file mode 100644 index 72ef106..0000000 --- a/api/reference/list_accounts.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'List accounts (admin only) [Requires: admin:system]' -openapi: 'GET /libops.v1.AdminAccountService/ListAccounts' ---- diff --git a/api/reference/list_all_projects.mdx b/api/reference/list_all_projects.mdx deleted file mode 100644 index 93117c2..0000000 --- a/api/reference/list_all_projects.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'List all projects across all organizations (admin only) [Requires: admin:system]' -openapi: 'GET /libops.v1.AdminProjectService/ListAllProjects' ---- diff --git a/api/reference/list_all_sites.mdx b/api/reference/list_all_sites.mdx deleted file mode 100644 index d647853..0000000 --- a/api/reference/list_all_sites.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'List all sites across all organizations/projects (admin only) [Requires: admin:system]' -openapi: 'GET /libops.v1.AdminSiteService/ListAllSites' ---- diff --git a/api/reference/openapi.yaml b/api/reference/openapi.yaml index 70c4d21..0d9b4b8 100644 --- a/api/reference/openapi.yaml +++ b/api/reference/openapi.yaml @@ -1,10821 +1,4500 @@ { - "openapi": "3.1.2", - "info": { - "title": "LibOps API", - "version": "1.0.0", - "description": "LibOps control plane API to run docker compose projects on Google Cloud", - "contact": { - "name": "LibOps", - "url": "https://github.com/libops/api" - }, - "license": { - "name": "MIT", - "url": "https://github.com/libops/api/blob/main/LICENSE" - } - }, - "servers": [ - { - "url": "https://api.libops.io", - "description": "Production server" - } - ], - "paths": { - "/libops.v1.AccountService/CreateApiKey": { - "post": { - "tags": [ - "libops.v1.AccountService" + "components": { + "schemas": { + "base64": { + "description": "Specifies if the message query param is base64 encoded, which may be required for binary data", + "title": "base64", + "type": "boolean" + }, + "compression": { + "description": "Which compression algorithm to use for this request", + "enum": [ + "identity", + "gzip", + "br" ], - "summary": "Create an API key for the authenticated user [Requires: write:user]", - "description": "Create an API key for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", - "operationId": "libops.v1.AccountService.CreateApiKey", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } + "title": "compression" + }, + "connect": { + "description": "Define the version of the Connect protocol", + "enum": [ + "v1" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateApiKeyRequest" - } - } + "title": "connect" + }, + "connect-protocol-version": { + "const": 1, + "description": "Define the version of the Connect protocol", + "enum": [ + 1 + ], + "title": "Connect-Protocol-Version", + "type": "number" + }, + "connect-timeout-header": { + "description": "Define the timeout, in ms", + "title": "Connect-Timeout-Ms", + "type": "number" + }, + "connect.error": { + "additionalProperties": true, + "description": "Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation", + "properties": { + "code": { + "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].", + "enum": [ + "canceled", + "unknown", + "invalid_argument", + "deadline_exceeded", + "not_found", + "already_exists", + "permission_denied", + "resource_exhausted", + "failed_precondition", + "aborted", + "out_of_range", + "unimplemented", + "internal", + "unavailable", + "data_loss", + "unauthenticated" + ], + "examples": [ + "not_found" + ], + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "details": { + "description": "A list of messages that carry the error details. There is no limit on the number of messages.", + "items": { + "$ref": "#/components/schemas/connect.error_details.Any" + }, + "type": "array" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateApiKeyResponse" - } - } - } + "message": { + "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "write:user" - ] + "title": "Connect Error", + "type": "object" + }, + "connect.error_details.Any": { + "additionalProperties": true, + "description": "Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details.", + "properties": { + "debug": { + "description": "Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic.", + "discriminator": { + "propertyName": "type" + }, + "oneOf": [ + { + "additionalProperties": true, + "description": "Detailed error information.", + "title": "Any", + "type": "object" + } + ], + "title": "Debug" }, - { - "apiKey": [] + "type": { + "description": "A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field.", + "type": "string" + }, + "value": { + "description": "The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field.", + "format": "binary", + "type": "string" } + }, + "type": "object" + }, + "encoding": { + "description": "Define which encoding or 'Message-Codec' to use", + "enum": [ + "proto", + "json" ], - "x-scopes": [ - "write:user" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:write" - } - }, - "/libops.v1.AccountService/GetAccountByEmail": { - "get": { - "tags": [ - "libops.v1.AccountService" + "title": "encoding" + }, + "google.protobuf.Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\n empty messages in your APIs. A typical example is to use it as the request\n or the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }", + "type": "object" + }, + "google.protobuf.FieldMask": { + "description": "`FieldMask` represents a set of symbolic field paths, for example:\n\n paths: \"f.a\"\n paths: \"f.b.d\"\n\n Here `f` represents a field in some root message, `a` and `b`\n fields in the message found in `f`, and `d` a field found in the\n message in `f.b`.\n\n Field masks are used to specify a subset of fields that should be\n returned by a get operation or modified by an update operation.\n Field masks also have a custom JSON encoding (see below).\n\n # Field Masks in Projections\n\n When used in the context of a projection, a response message or\n sub-message is filtered by the API to only contain those fields as\n specified in the mask. For example, if the mask in the previous\n example is applied to a response message as follows:\n\n f {\n a : 22\n b {\n d : 1\n x : 2\n }\n y : 13\n }\n z: 8\n\n The result will not contain specific values for fields x,y and z\n (their value will be set to the default, and omitted in proto text\n output):\n\n\n f {\n a : 22\n b {\n d : 1\n }\n }\n\n A repeated field is not allowed except at the last position of a\n paths string.\n\n If a FieldMask object is not present in a get operation, the\n operation applies to all fields (as if a FieldMask of all fields\n had been specified).\n\n Note that a field mask does not necessarily apply to the\n top-level response message. In case of a REST get operation, the\n field mask applies directly to the response, but in case of a REST\n list operation, the mask instead applies to each individual message\n in the returned resource list. In case of a REST custom method,\n other definitions may be used. Where the mask applies will be\n clearly documented together with its declaration in the API. In\n any case, the effect on the returned resource/resources is required\n behavior for APIs.\n\n # Field Masks in Update Operations\n\n A field mask in update operations specifies which fields of the\n targeted resource are going to be updated. The API is required\n to only change the values of the fields as specified in the mask\n and leave the others untouched. If a resource is passed in to\n describe the updated values, the API ignores the values of all\n fields not covered by the mask.\n\n If a repeated field is specified for an update operation, new values will\n be appended to the existing repeated field in the target resource. Note that\n a repeated field is only allowed in the last position of a `paths` string.\n\n If a sub-message is specified in the last position of the field mask for an\n update operation, then new value will be merged into the existing sub-message\n in the target resource.\n\n For example, given the target message:\n\n f {\n b {\n d: 1\n x: 2\n }\n c: [1]\n }\n\n And an update message:\n\n f {\n b {\n d: 10\n }\n c: [2]\n }\n\n then if the field mask is:\n\n paths: [\"f.b\", \"f.c\"]\n\n then the result will be:\n\n f {\n b {\n d: 10\n x: 2\n }\n c: [1, 2]\n }\n\n An implementation may provide options to override this default behavior for\n repeated and message fields.\n\n In order to reset a field's value to the default, the field must\n be in the mask and set to the default value in the provided resource.\n Hence, in order to reset all fields of a resource, provide a default\n instance of the resource and set all fields in the mask, or do\n not provide a mask as described below.\n\n If a field mask is not present on update, the operation applies to\n all fields (as if a field mask of all fields has been specified).\n Note that in the presence of schema evolution, this may mean that\n fields the client does not know and has therefore not filled into\n the request will be reset to their default. If this is unwanted\n behavior, a specific service may require a client to always specify\n a field mask, producing an error if not.\n\n As with get operations, the location of the resource which\n describes the updated values in the request message depends on the\n operation kind. In any case, the effect of the field mask is\n required to be honored by the API.\n\n ## Considerations for HTTP REST\n\n The HTTP kind of an update operation which uses a field mask must\n be set to PATCH instead of PUT in order to satisfy HTTP semantics\n (PUT must only be used for full updates).\n\n # JSON Encoding of Field Masks\n\n In JSON, a field mask is encoded as a single string where paths are\n separated by a comma. Fields name in each path are converted\n to/from lower-camel naming conventions.\n\n As an example, consider the following message declarations:\n\n message Profile {\n User user = 1;\n Photo photo = 2;\n }\n message User {\n string display_name = 1;\n string address = 2;\n }\n\n In proto a field mask for `Profile` may look as such:\n\n mask {\n paths: \"user.display_name\"\n paths: \"photo\"\n }\n\n In JSON, the same mask is represented as below:\n\n {\n mask: \"user.displayName,photo\"\n }\n\n # Field Masks and Oneof Fields\n\n Field masks treat fields in oneofs just as regular fields. Consider the\n following message:\n\n message SampleMessage {\n oneof test_oneof {\n string name = 4;\n SubMessage sub_message = 9;\n }\n }\n\n The field mask can be:\n\n mask {\n paths: \"name\"\n }\n\n Or:\n\n mask {\n paths: \"sub_message\"\n }\n\n Note that oneof type names (\"test_oneof\" in this case) cannot be used in\n paths.\n\n ## Field Mask Verification\n\n The implementation of any API method which has a FieldMask type field in the\n request should verify the included field paths, and return an\n `INVALID_ARGUMENT` error if any path is unmappable.", + "type": "string" + }, + "google.protobuf.Struct": { + "additionalProperties": { + "$ref": "#/components/schemas/google.protobuf.Value" + }, + "description": "`Struct` represents a structured data value, consisting of fields\n which map to dynamically typed values. In some languages, `Struct`\n might be supported by a native representation. For example, in\n scripting languages like JS a struct is represented as an\n object. The details of that representation are described together\n with the proto support for the language.\n\n The JSON representation for `Struct` is JSON object.", + "type": "object" + }, + "google.protobuf.Timestamp": { + "description": "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n Timestamp timestamp;\n timestamp.set_seconds(time(NULL));\n timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n struct timeval tv;\n gettimeofday(\u0026tv, NULL);\n\n Timestamp timestamp;\n timestamp.set_seconds(tv.tv_sec);\n timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n FILETIME ft;\n GetSystemTimeAsFileTime(\u0026ft);\n UINT64 ticks = (((UINT64)ft.dwHighDateTime) \u003c\u003c 32) | ft.dwLowDateTime;\n\n // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n Timestamp timestamp;\n timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n long millis = System.currentTimeMillis();\n\n Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n Instant now = Instant.now();\n\n Timestamp timestamp =\n Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n timestamp = Timestamp()\n timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format.", + "examples": [ + "2023-01-15T01:30:15.01Z", + "2024-12-25T12:00:00Z" ], - "summary": "Get account information by email (for Terraform provider lookups) [Requires: read:user]", - "description": "Get account information by email (for Terraform provider lookups)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", - "operationId": "libops.v1.AccountService.GetAccountByEmail.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, + "format": "date-time", + "type": "string" + }, + "google.protobuf.Value": { + "description": "`Value` represents a dynamically typed value which can be either\n null, a number, a string, a boolean, a recursive struct value, or a\n list of values. A producer of value is expected to set one of these\n variants. Absence of any variant indicates an error.\n\n The JSON representation for `Value` is JSON value.", + "oneOf": [ { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "type": "null" }, { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountByEmailRequest" - } - } - } + "type": "number" }, { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "type": "string" }, { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "type": "boolean" }, { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "type": "array" }, { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "additionalProperties": true, + "type": "object" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountByEmailResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:user" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:user" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" + ] }, - "post": { - "tags": [ - "libops.v1.AccountService" - ], - "summary": "Get account information by email (for Terraform provider lookups) [Requires: read:user]", - "description": "Get account information by email (for Terraform provider lookups)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", - "operationId": "libops.v1.AccountService.GetAccountByEmail", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.ApiKeyMetadata": { + "additionalProperties": false, + "properties": { + "active": { + "description": "Whether the key is active", + "title": "active", + "type": "boolean" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountByEmailRequest" - } - } + "apiKeyId": { + "description": "UUID of the API key", + "title": "api_key_id", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "createdAt": { + "description": "Unix timestamp", + "format": "int64", + "title": "created_at", + "type": [ + "integer", + "string" + ] }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountByEmailResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:user" + "description": { + "description": "Optional description", + "title": "description", + "type": "string" + }, + "lastUsedAt": { + "description": "Unix timestamp (0 if never used)", + "format": "int64", + "title": "last_used_at", + "type": [ + "integer", + "string" ] }, - { - "apiKey": [] + "name": { + "description": "User-friendly name", + "title": "name", + "type": "string" + }, + "scopes": { + "description": "Scope restrictions (empty = no restrictions)", + "items": { + "type": "string" + }, + "title": "scopes", + "type": "array" } - ], - "x-scopes": [ - "read:user" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" - } - }, - "/libops.v1.AccountService/ListApiKeys": { - "get": { - "tags": [ - "libops.v1.AccountService" - ], - "summary": "List API keys for the authenticated user [Requires: read:user]", - "description": "List API keys for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", - "operationId": "libops.v1.AccountService.ListApiKeys.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ApiKeyMetadata", + "type": "object" + }, + "libops.v1.AssistantChatRequest": { + "additionalProperties": false, + "description": "AssistantChatRequest sends a natural language request scoped to a context.", + "properties": { + "agentModel": { + "description": "Optional coding agent model selection.", + "title": "agent_model", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "clientRequestId": { + "description": "Optional client-generated request identifier for idempotency.", + "title": "client_request_id", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListApiKeysRequest" - } - } - } + "harness": { + "$ref": "#/components/schemas/libops.v1.TaskHarness", + "description": "Optional coding harness selection.", + "title": "harness" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "message": { + "description": "The user message to execute.", + "title": "message", + "type": "string" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "metadata": { + "additionalProperties": { + "title": "value", + "type": "string" + }, + "description": "Optional metadata for routing or model selection.", + "title": "metadata", + "type": "object" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "organizationId": { + "description": "Target organization (required).", + "title": "organization_id", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "projectId": { + "description": "Optional project scope for the request.", + "title": "project_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListApiKeysResponse" - } - } - } + "siteId": { + "description": "Optional site scope for the request.", + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "read:user" - ] + "title": "AssistantChatRequest", + "type": "object" + }, + "libops.v1.AssistantChatResponse": { + "additionalProperties": false, + "description": "AssistantChatResponse returns the queued request details.", + "properties": { + "reply": { + "description": "Optional immediate reply for UI display.", + "title": "reply", + "type": "string" }, - { - "apiKey": [] + "requestId": { + "description": "Server-generated request identifier.", + "title": "request_id", + "type": "string" + }, + "status": { + "description": "Status for the queued request (e.g., \"queued\").", + "title": "status", + "type": "string" } - ], - "x-scopes": [ - "read:user" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" + }, + "title": "AssistantChatResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AccountService" - ], - "summary": "List API keys for the authenticated user [Requires: read:user]", - "description": "List API keys for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", - "operationId": "libops.v1.AccountService.ListApiKeys", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.CancelTaskRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "taskId": { + "title": "task_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListApiKeysRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListApiKeysResponse" - } - } - } + "title": "CancelTaskRequest", + "type": "object" + }, + "libops.v1.CancelTaskResponse": { + "additionalProperties": false, + "properties": { + "task": { + "$ref": "#/components/schemas/libops.v1.Task", + "title": "task" } }, - "security": [ - { - "oauth2": [ - "read:user" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:user" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" - } - }, - "/libops.v1.AccountService/RevokeApiKey": { - "post": { - "tags": [ - "libops.v1.AccountService" - ], - "summary": "Revoke an API key for the authenticated user [Requires: write:user]", - "description": "Revoke an API key for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", - "operationId": "libops.v1.AccountService.RevokeApiKey", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "title": "CancelTaskResponse", + "type": "object" + }, + "libops.v1.CheckSiteDomainRequest": { + "additionalProperties": false, + "properties": { + "domainId": { + "title": "domain_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "siteId": { + "title": "site_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.RevokeApiKeyRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.RevokeApiKeyResponse" - } - } - } + "title": "CheckSiteDomainRequest", + "type": "object" + }, + "libops.v1.CheckSiteDomainResponse": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/components/schemas/libops.v1.common.DomainConfig", + "title": "domain" } }, - "security": [ - { - "oauth2": [ - "write:user" - ] + "title": "CheckSiteDomainResponse", + "type": "object" + }, + "libops.v1.CreateApiKeyRequest": { + "additionalProperties": false, + "properties": { + "description": { + "description": "Optional description", + "title": "description", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:user" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:write" - } - }, - "/libops.v1.AdminAccountService/CreateAccount": { - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "Create a new account [Requires: admin:system]", - "description": "Create a new account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.CreateAccount", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "name": { + "description": "User-friendly name for the key", + "title": "name", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "scopes": { + "description": "Optional scope restrictions (e.g., [\"organization:read\", \"project:write\"])", + "items": { + "type": "string" + }, + "title": "scopes", + "type": "array" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateAccountRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "CreateApiKeyRequest", + "type": "object" + }, + "libops.v1.CreateApiKeyResponse": { + "additionalProperties": false, + "properties": { + "apiKey": { + "description": "The actual key value (only returned once!)", + "title": "api_key", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateAccountResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" + "apiKeyId": { + "description": "UUID of the created key", + "title": "api_key_id", + "type": "string" + }, + "createdAt": { + "format": "int64", + "title": "created_at", + "type": [ + "integer", + "string" ] }, - { - "apiKey": [] + "description": { + "title": "description", + "type": "string" + }, + "name": { + "title": "name", + "type": "string" + }, + "scopes": { + "items": { + "type": "string" + }, + "title": "scopes", + "type": "array" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminAccountService/DeleteAccount": { - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "Delete an account [Requires: admin:system]", - "description": "Delete an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.DeleteAccount", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "CreateApiKeyResponse", + "type": "object" + }, + "libops.v1.CreateOrganizationFirewallRuleRequest": { + "additionalProperties": false, + "properties": { + "cidr": { + "title": "cidr", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteAccountRequest" - } - } + "name": { + "title": "name", + "type": "string" }, - "required": true + "organizationId": { + "title": "organization_id", + "type": "string" + }, + "ruleType": { + "$ref": "#/components/schemas/libops.v1.FirewallRuleType", + "title": "rule_type" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "CreateOrganizationFirewallRuleRequest", + "type": "object" + }, + "libops.v1.CreateOrganizationFirewallRuleResponse": { + "additionalProperties": false, + "properties": { + "rule": { + "$ref": "#/components/schemas/libops.v1.OrganizationFirewallRule", + "title": "rule" + } + }, + "title": "CreateOrganizationFirewallRuleResponse", + "type": "object" + }, + "libops.v1.CreateOrganizationMemberRequest": { + "additionalProperties": false, + "properties": { + "email": { + "description": "Email address of the member account to add", + "title": "email", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } + "organizationId": { + "title": "organization_id", + "type": "string" + }, + "role": { + "description": "\"owner\", \"developer\", \"read\"", + "title": "role", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "CreateOrganizationMemberRequest", + "type": "object" + }, + "libops.v1.CreateOrganizationMemberResponse": { + "additionalProperties": false, + "properties": { + "member": { + "$ref": "#/components/schemas/libops.v1.MemberDetail", + "title": "member" + } + }, + "title": "CreateOrganizationMemberResponse", + "type": "object" + }, + "libops.v1.CreateOrganizationRequest": { + "additionalProperties": false, + "properties": { + "folder": { + "$ref": "#/components/schemas/libops.v1.common.FolderConfig", + "title": "folder" + } + }, + "title": "CreateOrganizationRequest", + "type": "object" + }, + "libops.v1.CreateOrganizationResponse": { + "additionalProperties": false, + "properties": { + "folder": { + "$ref": "#/components/schemas/libops.v1.common.FolderConfig", + "title": "folder" }, - { - "apiKey": [] + "organizationId": { + "title": "organization_id", + "type": "string" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminAccountService/GetAccount": { - "get": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "Get account information by ID [Requires: admin:system]", - "description": "Get account information by ID\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.GetAccount.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "CreateOrganizationResponse", + "type": "object" + }, + "libops.v1.CreateOrganizationSecretRequest": { + "additionalProperties": false, + "properties": { + "name": { + "description": "e.g., \"DATABASE_URL\"", + "title": "name", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountRequest" - } - } - } + "value": { + "description": "Secret value (redacted in audit logs)", + "title": "value", + "type": "string" + } + }, + "title": "CreateOrganizationSecretRequest", + "type": "object" + }, + "libops.v1.CreateOrganizationSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.OrganizationSecret", + "title": "secret" + } + }, + "title": "CreateOrganizationSecretResponse", + "type": "object" + }, + "libops.v1.CreateOrganizationSettingRequest": { + "additionalProperties": false, + "properties": { + "description": { + "title": "description", + "type": "string" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "editable": { + "title": "editable", + "type": "boolean" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "key": { + "title": "key", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "value": { + "title": "value", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountResponse" - } - } - } + }, + "title": "CreateOrganizationSettingRequest", + "type": "object" + }, + "libops.v1.CreateOrganizationSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.OrganizationSetting", + "title": "setting" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "CreateOrganizationSettingResponse", + "type": "object" + }, + "libops.v1.CreateProjectFirewallRuleRequest": { + "additionalProperties": false, + "properties": { + "cidr": { + "title": "cidr", + "type": "string" }, - { - "apiKey": [] + "name": { + "title": "name", + "type": "string" + }, + "projectId": { + "title": "project_id", + "type": "string" + }, + "ruleType": { + "$ref": "#/components/schemas/libops.v1.FirewallRuleType", + "title": "rule_type" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" + }, + "title": "CreateProjectFirewallRuleRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "Get account information by ID [Requires: admin:system]", - "description": "Get account information by ID\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.GetAccount", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "libops.v1.CreateProjectFirewallRuleResponse": { + "additionalProperties": false, + "properties": { + "rule": { + "$ref": "#/components/schemas/libops.v1.ProjectFirewallRule", + "title": "rule" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountRequest" - } - } + }, + "title": "CreateProjectFirewallRuleResponse", + "type": "object" + }, + "libops.v1.CreateProjectMemberRequest": { + "additionalProperties": false, + "properties": { + "email": { + "description": "Email address of the member account to add", + "title": "email", + "type": "string" }, - "required": true + "projectId": { + "title": "project_id", + "type": "string" + }, + "role": { + "description": "\"developer\", \"read\"", + "title": "role", + "type": "string" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "CreateProjectMemberRequest", + "type": "object" + }, + "libops.v1.CreateProjectMemberResponse": { + "additionalProperties": false, + "properties": { + "member": { + "$ref": "#/components/schemas/libops.v1.MemberDetail", + "title": "member" + } + }, + "title": "CreateProjectMemberResponse", + "type": "object" + }, + "libops.v1.CreateProjectRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetAccountResponse" - } - } - } + "project": { + "$ref": "#/components/schemas/libops.v1.common.ProjectConfig", + "title": "project" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "CreateProjectRequest", + "type": "object" + }, + "libops.v1.CreateProjectResponse": { + "additionalProperties": false, + "properties": { + "project": { + "$ref": "#/components/schemas/libops.v1.common.ProjectConfig", + "title": "project" + } + }, + "title": "CreateProjectResponse", + "type": "object" + }, + "libops.v1.CreateProjectRuntimeRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "apiKey": [] + "runtime": { + "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig", + "title": "runtime" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminAccountService/GetAccountByEmail": { - "get": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "Get account information by email [Requires: admin:system]", - "description": "Get account information by email\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.GetAccountByEmail.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "CreateProjectRuntimeRequest", + "type": "object" + }, + "libops.v1.CreateProjectRuntimeResponse": { + "additionalProperties": false, + "properties": { + "runtime": { + "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig", + "title": "runtime" + } + }, + "title": "CreateProjectRuntimeResponse", + "type": "object" + }, + "libops.v1.CreateProjectSecretRequest": { + "additionalProperties": false, + "properties": { + "name": { + "title": "name", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetAccountByEmailRequest" - } - } - } + "value": { + "title": "value", + "type": "string" + } + }, + "title": "CreateProjectSecretRequest", + "type": "object" + }, + "libops.v1.CreateProjectSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.ProjectSecret", + "title": "secret" + } + }, + "title": "CreateProjectSecretResponse", + "type": "object" + }, + "libops.v1.CreateProjectSettingRequest": { + "additionalProperties": false, + "properties": { + "description": { + "title": "description", + "type": "string" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "editable": { + "title": "editable", + "type": "boolean" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "key": { + "title": "key", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "value": { + "title": "value", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetAccountByEmailResponse" - } - } - } + }, + "title": "CreateProjectSettingRequest", + "type": "object" + }, + "libops.v1.CreateProjectSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.ProjectSetting", + "title": "setting" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" + "title": "CreateProjectSettingResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "Get account information by email [Requires: admin:system]", - "description": "Get account information by email\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.GetAccountByEmail", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.CreateSiteDomainRequest": { + "additionalProperties": false, + "properties": { + "hostname": { + "title": "hostname", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "siteId": { + "title": "site_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetAccountByEmailRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "CreateSiteDomainRequest", + "type": "object" + }, + "libops.v1.CreateSiteDomainResponse": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/components/schemas/libops.v1.common.DomainConfig", + "title": "domain" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetAccountByEmailResponse" - } - } - } + "ownershipProof": { + "$ref": "#/components/schemas/libops.v1.common.DnsRecordInstruction", + "title": "ownership_proof" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminAccountService/ListAccountProjects": { - "get": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "List projects for an account [Requires: admin:system]", - "description": "List projects for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.ListAccountProjects.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "title": "CreateSiteDomainResponse", + "type": "object" + }, + "libops.v1.CreateSiteFirewallRuleRequest": { + "additionalProperties": false, + "properties": { + "cidr": { + "title": "cidr", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountProjectsRequest" - } - } - } + "name": { + "title": "name", + "type": "string" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "ruleType": { + "$ref": "#/components/schemas/libops.v1.FirewallRuleType", + "title": "rule_type" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "siteId": { + "title": "site_id", + "type": "string" + } + }, + "title": "CreateSiteFirewallRuleRequest", + "type": "object" + }, + "libops.v1.CreateSiteFirewallRuleResponse": { + "additionalProperties": false, + "properties": { + "rule": { + "$ref": "#/components/schemas/libops.v1.SiteFirewallRule", + "title": "rule" + } + }, + "title": "CreateSiteFirewallRuleResponse", + "type": "object" + }, + "libops.v1.CreateSiteMemberRequest": { + "additionalProperties": false, + "properties": { + "email": { + "description": "Email address of the member account to add", + "title": "email", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "role": { + "description": "\"developer\", \"read\"", + "title": "role", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "siteId": { + "title": "site_id", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountProjectsResponse" - } - } - } + }, + "title": "CreateSiteMemberRequest", + "type": "object" + }, + "libops.v1.CreateSiteMemberResponse": { + "additionalProperties": false, + "properties": { + "member": { + "$ref": "#/components/schemas/libops.v1.MemberDetail", + "title": "member" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "CreateSiteMemberResponse", + "type": "object" + }, + "libops.v1.CreateSiteRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "apiKey": [] + "projectId": { + "title": "project_id", + "type": "string" + }, + "site": { + "$ref": "#/components/schemas/libops.v1.common.SiteConfig", + "title": "site" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" + }, + "title": "CreateSiteRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "List projects for an account [Requires: admin:system]", - "description": "List projects for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.ListAccountProjects", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "libops.v1.CreateSiteResponse": { + "additionalProperties": false, + "properties": { + "site": { + "$ref": "#/components/schemas/libops.v1.common.SiteConfig", + "title": "site" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountProjectsRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "CreateSiteResponse", + "type": "object" + }, + "libops.v1.CreateSiteSecretRequest": { + "additionalProperties": false, + "properties": { + "name": { + "title": "name", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountProjectsResponse" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" + }, + "value": { + "title": "value", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] + "title": "CreateSiteSecretRequest", + "type": "object" + }, + "libops.v1.CreateSiteSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.SiteSecret", + "title": "secret" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminAccountService/ListAccountRepositories": { - "get": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "List repositories for an account [Requires: admin:system]", - "description": "List repositories for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.ListAccountRepositories.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountRepositoriesRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + }, + "title": "CreateSiteSecretResponse", + "type": "object" + }, + "libops.v1.CreateSiteSettingRequest": { + "additionalProperties": false, + "properties": { + "description": { + "title": "description", + "type": "string" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "editable": { + "title": "editable", + "type": "boolean" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "key": { + "title": "key", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountRepositoriesResponse" - } - } - } + "value": { + "title": "value", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] + "title": "CreateSiteSettingRequest", + "type": "object" + }, + "libops.v1.CreateSiteSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.SiteSetting", + "title": "setting" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" + }, + "title": "CreateSiteSettingResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "List repositories for an account [Requires: admin:system]", - "description": "List repositories for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.ListAccountRepositories", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.CreateSshKeyRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountRepositoriesRequest" - } - } + "name": { + "nullable": true, + "title": "name", + "type": "string" }, - "required": true + "publicKey": { + "title": "public_key", + "type": "string" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountRepositoriesResponse" - } - } - } + "title": "CreateSshKeyRequest", + "type": "object" + }, + "libops.v1.CreateSshKeyResponse": { + "additionalProperties": false, + "properties": { + "sshKey": { + "$ref": "#/components/schemas/libops.v1.SshKey", + "title": "ssh_key" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "CreateSshKeyResponse", + "type": "object" + }, + "libops.v1.CreateTaskRequest": { + "additionalProperties": false, + "properties": { + "agentModel": { + "title": "agent_model", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminAccountService/ListAccounts": { - "get": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "List accounts (admin only) [Requires: admin:system]", - "description": "List accounts (admin only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.ListAccounts.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "clientRequestId": { + "title": "client_request_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountsRequest" - } - } - } + "harness": { + "$ref": "#/components/schemas/libops.v1.TaskHarness", + "title": "harness" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "metadata": { + "$ref": "#/components/schemas/google.protobuf.Struct", + "title": "metadata" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "prompt": { + "title": "prompt", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountsResponse" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] + "title": "CreateTaskRequest", + "type": "object" + }, + "libops.v1.CreateTaskResponse": { + "additionalProperties": false, + "properties": { + "task": { + "$ref": "#/components/schemas/libops.v1.Task", + "title": "task" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" + }, + "title": "CreateTaskResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "List accounts (admin only) [Requires: admin:system]", - "description": "List accounts (admin only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.ListAccounts", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.DeleteOrganizationFirewallRuleRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "ruleId": { + "title": "rule_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountsRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "DeleteOrganizationFirewallRuleRequest", + "type": "object" + }, + "libops.v1.DeleteOrganizationMemberRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListAccountsResponse" - } - } - } + "organizationId": { + "title": "organization_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] + "title": "DeleteOrganizationMemberRequest", + "type": "object" + }, + "libops.v1.DeleteOrganizationRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminAccountService/UpdateAccount": { - "post": { - "tags": [ - "libops.v1.AdminAccountService" - ], - "summary": "Update account information [Requires: admin:system]", - "description": "Update account information\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminAccountService.UpdateAccount", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "DeleteOrganizationRequest", + "type": "object" + }, + "libops.v1.DeleteOrganizationSecretRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "secretId": { + "title": "secret_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateAccountRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "DeleteOrganizationSecretRequest", + "type": "object" + }, + "libops.v1.DeleteOrganizationSettingRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateAccountResponse" - } - } - } + "settingId": { + "title": "setting_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "DeleteOrganizationSettingRequest", + "type": "object" + }, + "libops.v1.DeleteProjectFirewallRuleRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "apiKey": [] + "ruleId": { + "title": "rule_id", + "type": "string" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminConvergenceService/CheckConvergence": { - "post": { - "tags": [ - "libops.v1.AdminConvergenceService" - ], - "summary": "CheckConvergence", - "operationId": "libops.v1.AdminConvergenceService.CheckConvergence", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "DeleteProjectFirewallRuleRequest", + "type": "object" + }, + "libops.v1.DeleteProjectMemberRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "projectId": { + "title": "project_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CheckConvergenceRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "DeleteProjectMemberRequest", + "type": "object" + }, + "libops.v1.DeleteProjectRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CheckConvergenceResponse" - } - } - } + "projectId": { + "title": "project_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "DeleteProjectRequest", + "type": "object" + }, + "libops.v1.DeleteProjectSecretRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "apiKey": [] + "secretId": { + "title": "secret_id", + "type": "string" } - ], - "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |", - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminOrganizationService/CreateOrganization": { - "post": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "Create a new organization (admin - can set all fields) [Requires: admin:system]", - "description": "Create a new organization (admin - can set all fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.CreateOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "DeleteProjectSecretRequest", + "type": "object" + }, + "libops.v1.DeleteProjectSettingRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "settingId": { + "title": "setting_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminCreateOrganizationRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "DeleteProjectSettingRequest", + "type": "object" + }, + "libops.v1.DeleteSiteDomainRequest": { + "additionalProperties": false, + "properties": { + "domainId": { + "title": "domain_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminCreateOrganizationResponse" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "DeleteSiteDomainRequest", + "type": "object" + }, + "libops.v1.DeleteSiteFirewallRuleRequest": { + "additionalProperties": false, + "properties": { + "ruleId": { + "title": "rule_id", + "type": "string" }, - { - "apiKey": [] + "siteId": { + "title": "site_id", + "type": "string" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminOrganizationService/DeleteOrganization": { - "post": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "Delete a organization (must have no projects) [Requires: admin:system]", - "description": "Delete a organization (must have no projects)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.DeleteOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "DeleteSiteFirewallRuleRequest", + "type": "object" + }, + "libops.v1.DeleteSiteMemberRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "siteId": { + "title": "site_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminDeleteOrganizationRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } + "title": "DeleteSiteMemberRequest", + "type": "object" + }, + "libops.v1.DeleteSiteRequest": { + "additionalProperties": false, + "properties": { + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "DeleteSiteRequest", + "type": "object" + }, + "libops.v1.DeleteSiteSecretRequest": { + "additionalProperties": false, + "properties": { + "secretId": { + "title": "secret_id", + "type": "string" }, - { - "apiKey": [] + "siteId": { + "title": "site_id", + "type": "string" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminOrganizationService/GetOrganization": { - "get": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "Get organization configuration (admin view - includes sensitive fields) [Requires: admin:system]", - "description": "Get organization configuration (admin view - includes sensitive fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.GetOrganization.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetOrganizationRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + }, + "title": "DeleteSiteSecretRequest", + "type": "object" + }, + "libops.v1.DeleteSiteSettingRequest": { + "additionalProperties": false, + "properties": { + "settingId": { + "title": "setting_id", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "siteId": { + "title": "site_id", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + }, + "title": "DeleteSiteSettingRequest", + "type": "object" + }, + "libops.v1.DeleteSshKeyRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetOrganizationResponse" - } - } - } + "keyId": { + "title": "key_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "DeleteSshKeyRequest", + "type": "object" + }, + "libops.v1.DeploySiteRequest": { + "additionalProperties": false, + "properties": { + "gitRef": { + "description": "Branch, tag, or commit to deploy", + "nullable": true, + "title": "git_ref", + "type": "string" }, - { - "apiKey": [] + "siteId": { + "title": "site_id", + "type": "string" } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" + }, + "title": "DeploySiteRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "Get organization configuration (admin view - includes sensitive fields) [Requires: admin:system]", - "description": "Get organization configuration (admin view - includes sensitive fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.GetOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.DeploySiteResponse": { + "additionalProperties": false, + "properties": { + "deploymentId": { + "title": "deployment_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "status": { + "$ref": "#/components/schemas/libops.v1.SiteStatus", + "title": "status" } + }, + "title": "DeploySiteResponse", + "type": "object" + }, + "libops.v1.FirewallRuleType": { + "enum": [ + "FIREWALL_RULE_TYPE_UNSPECIFIED", + "FIREWALL_RULE_TYPE_HTTPS_ALLOWED", + "FIREWALL_RULE_TYPE_SSH_ALLOWED", + "FIREWALL_RULE_TYPE_BLOCKED" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetOrganizationRequest" - } - } - }, - "required": true + "title": "FirewallRuleType", + "type": "string" + }, + "libops.v1.GetAccountByEmailRequest": { + "additionalProperties": false, + "properties": { + "email": { + "title": "email", + "type": "string" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetOrganizationResponse" - } - } - } + "title": "GetAccountByEmailRequest", + "type": "object" + }, + "libops.v1.GetAccountByEmailResponse": { + "additionalProperties": false, + "properties": { + "account": { + "$ref": "#/components/schemas/libops.v1.OrganizationAccount", + "title": "account" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] + "title": "GetAccountByEmailResponse", + "type": "object" + }, + "libops.v1.GetOperationRequest": { + "additionalProperties": false, + "properties": { + "operationId": { + "title": "operation_id", + "type": "string" + } + }, + "title": "GetOperationRequest", + "type": "object" + }, + "libops.v1.GetOperationResponse": { + "additionalProperties": false, + "properties": { + "operation": { + "$ref": "#/components/schemas/libops.v1.Operation", + "title": "operation" + } + }, + "title": "GetOperationResponse", + "type": "object" + }, + "libops.v1.GetOrganizationRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" + } + }, + "title": "GetOrganizationRequest", + "type": "object" + }, + "libops.v1.GetOrganizationResponse": { + "additionalProperties": false, + "properties": { + "folder": { + "$ref": "#/components/schemas/libops.v1.common.FolderConfig", + "title": "folder" + } + }, + "title": "GetOrganizationResponse", + "type": "object" + }, + "libops.v1.GetOrganizationSecretRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminOrganizationService/ListOrganizationProjects": { - "get": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "List projects for a organization (admin view) [Requires: admin:system]", - "description": "List projects for a organization (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.ListOrganizationProjects.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationProjectsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationProjectsResponse" - } - } - } + "secretId": { + "title": "secret_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" + "title": "GetOrganizationSecretRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "List projects for a organization (admin view) [Requires: admin:system]", - "description": "List projects for a organization (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.ListOrganizationProjects", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "libops.v1.GetOrganizationSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.OrganizationSecret", + "title": "secret" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationProjectsRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "GetOrganizationSecretResponse", + "type": "object" + }, + "libops.v1.GetOrganizationSettingRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationProjectsResponse" - } - } - } + "settingId": { + "title": "setting_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminOrganizationService/ListOrganizations": { - "get": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "List all organizations (admin view) [Requires: admin:system]", - "description": "List all organizations (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.ListOrganizations.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationsResponse" - } - } - } + "title": "GetOrganizationSettingRequest", + "type": "object" + }, + "libops.v1.GetOrganizationSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.OrganizationSetting", + "title": "setting" } }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - }, - "post": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "List all organizations (admin view) [Requires: admin:system]", - "description": "List all organizations (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.ListOrganizations", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationsRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListOrganizationsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminOrganizationService/UpdateOrganization": { - "post": { - "tags": [ - "libops.v1.AdminOrganizationService" - ], - "summary": "Update organization metadata (admin - can update all fields) [Requires: admin:system]", - "description": "Update organization metadata (admin - can update all fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminOrganizationService.UpdateOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminUpdateOrganizationRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminUpdateOrganizationResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminProjectService/CreateProject": { - "post": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "Create a new project (admin - can set all fields) [Requires: admin:system]", - "description": "Create a new project (admin - can set all fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.CreateProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminCreateProjectRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminCreateProjectResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminProjectService/DeleteProject": { - "post": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "Delete a project (must have no sites) [Requires: admin:system]", - "description": "Delete a project (must have no sites)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.DeleteProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminDeleteProjectRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminProjectService/GetProject": { - "get": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "Get project configuration (admin view - includes sensitive fields) [Requires: admin:system]", - "description": "Get project configuration (admin view - includes sensitive fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.GetProject.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetProjectRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetProjectResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - }, - "post": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "Get project configuration (admin view - includes sensitive fields) [Requires: admin:system]", - "description": "Get project configuration (admin view - includes sensitive fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.GetProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetProjectRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetProjectResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminProjectService/ListAllProjects": { - "get": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "List all projects across all organizations (admin only) [Requires: admin:system]", - "description": "List all projects across all organizations (admin only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.ListAllProjects.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllProjectsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllProjectsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - }, - "post": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "List all projects across all organizations (admin only) [Requires: admin:system]", - "description": "List all projects across all organizations (admin only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.ListAllProjects", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllProjectsRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllProjectsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminProjectService/ListProjects": { - "get": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "List projects for a organization (admin view) [Requires: admin:system]", - "description": "List projects for a organization (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.ListProjects.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListProjectsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListProjectsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - }, - "post": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "List projects for a organization (admin view) [Requires: admin:system]", - "description": "List projects for a organization (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.ListProjects", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListProjectsRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListProjectsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminProjectService/UpdateProject": { - "post": { - "tags": [ - "libops.v1.AdminProjectService" - ], - "summary": "Update project configuration (admin - can update all fields) [Requires: admin:system]", - "description": "Update project configuration (admin - can update all fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminProjectService.UpdateProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminUpdateProjectRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminUpdateProjectResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminReconciliationService/GenerateTerraformVars": { - "get": { - "tags": [ - "libops.v1.AdminReconciliationService" - ], - "summary": "Generate terraform variables JSON from database state", - "description": "Generate terraform variables JSON from database state", - "operationId": "libops.v1.AdminReconciliationService.GenerateTerraformVars.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GenerateTerraformVarsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GenerateTerraformVarsResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.AdminReconciliationService" - ], - "summary": "Generate terraform variables JSON from database state", - "description": "Generate terraform variables JSON from database state", - "operationId": "libops.v1.AdminReconciliationService.GenerateTerraformVars", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GenerateTerraformVarsRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GenerateTerraformVarsResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminReconciliationService/GetReconciliationRun": { - "get": { - "tags": [ - "libops.v1.AdminReconciliationService" - ], - "summary": "Get reconciliation run details from control-plane database", - "description": "Get reconciliation run details from control-plane database", - "operationId": "libops.v1.AdminReconciliationService.GetReconciliationRun.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetReconciliationRunRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetReconciliationRunResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.AdminReconciliationService" - ], - "summary": "Get reconciliation run details from control-plane database", - "description": "Get reconciliation run details from control-plane database", - "operationId": "libops.v1.AdminReconciliationService.GetReconciliationRun", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetReconciliationRunRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetReconciliationRunResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminReconciliationService/UpdateReconciliationStatus": { - "post": { - "tags": [ - "libops.v1.AdminReconciliationService" - ], - "summary": "Update reconciliation run status", - "description": "Update reconciliation run status", - "operationId": "libops.v1.AdminReconciliationService.UpdateReconciliationStatus", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateReconciliationStatusRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateReconciliationStatusResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminSiteService/CreateSite": { - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Create a new site (admin - can set all fields) [Requires: admin:system]", - "description": "Create a new site (admin - can set all fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.CreateSite", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminCreateSiteRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminCreateSiteResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminSiteService/DeleteSite": { - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Delete a site [Requires: admin:system]", - "description": "Delete a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.DeleteSite", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminDeleteSiteRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminSiteService/GetBlob": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get blob content via signed GCS URL (optional - VMs can fetch directly from GCS)", - "description": "Get blob content via signed GCS URL (optional - VMs can fetch directly from GCS)", - "operationId": "libops.v1.AdminSiteService.GetBlob.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetBlobRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetBlobResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get blob content via signed GCS URL (optional - VMs can fetch directly from GCS)", - "description": "Get blob content via signed GCS URL (optional - VMs can fetch directly from GCS)", - "operationId": "libops.v1.AdminSiteService.GetBlob", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetBlobRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetBlobResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminSiteService/GetSite": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get site configuration (admin view - includes internal GCP details) [Requires: admin:system]", - "description": "Get site configuration (admin view - includes internal GCP details)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.GetSite.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetSiteRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetSiteResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get site configuration (admin view - includes internal GCP details) [Requires: admin:system]", - "description": "Get site configuration (admin view - includes internal GCP details)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.GetSite", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetSiteRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminGetSiteResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminSiteService/GetSiteFirewall": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get firewall rules for a site VM (called by VM controller with GSA auth)", - "description": "Get firewall rules for a site VM (called by VM controller with GSA auth)", - "operationId": "libops.v1.AdminSiteService.GetSiteFirewall.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteFirewallRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteFirewallResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get firewall rules for a site VM (called by VM controller with GSA auth)", - "description": "Get firewall rules for a site VM (called by VM controller with GSA auth)", - "operationId": "libops.v1.AdminSiteService.GetSiteFirewall", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteFirewallRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteFirewallResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminSiteService/GetSiteSSHKeys": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get SSH keys for a site VM (called by VM controller with GSA auth)", - "description": "Get SSH keys for a site VM (called by VM controller with GSA auth)", - "operationId": "libops.v1.AdminSiteService.GetSiteSSHKeys.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSSHKeysRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSSHKeysResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get SSH keys for a site VM (called by VM controller with GSA auth)", - "description": "Get SSH keys for a site VM (called by VM controller with GSA auth)", - "operationId": "libops.v1.AdminSiteService.GetSiteSSHKeys", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSSHKeysRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSSHKeysResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminSiteService/GetSiteSecrets": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get secrets for a site VM (called by VM controller with GSA auth)", - "description": "Get secrets for a site VM (called by VM controller with GSA auth)", - "operationId": "libops.v1.AdminSiteService.GetSiteSecrets.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretsResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Get secrets for a site VM (called by VM controller with GSA auth)", - "description": "Get secrets for a site VM (called by VM controller with GSA auth)", - "operationId": "libops.v1.AdminSiteService.GetSiteSecrets", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretsRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretsResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminSiteService/ListAllSites": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "List all sites across all organizations/projects (admin only) [Requires: admin:system]", - "description": "List all sites across all organizations/projects (admin only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.ListAllSites.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllSitesRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllSitesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "List all sites across all organizations/projects (admin only) [Requires: admin:system]", - "description": "List all sites across all organizations/projects (admin only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.ListAllSites", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllSitesRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListAllSitesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminSiteService/ListSites": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "List sites (admin view) [Requires: admin:system]", - "description": "List sites (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.ListSites.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListSitesRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListSitesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "List sites (admin view) [Requires: admin:system]", - "description": "List sites (admin view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.ListSites", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListSitesRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminListSitesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AdminSiteService/SiteCheckIn": { - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Site VM check-in (updates checkin_at timestamp)", - "description": "Site VM check-in (updates checkin_at timestamp)", - "operationId": "libops.v1.AdminSiteService.SiteCheckIn", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.SiteCheckInRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.SiteCheckInResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminSiteService/SyncManifest": { - "get": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Sync site manifest - returns state hash and signed URLs to blobs (for eventual consistency) Called by site VMs every ~24h for eventual consistency", - "description": "Sync site manifest - returns state hash and signed URLs to blobs (for eventual consistency)\n Called by site VMs every ~24h for eventual consistency", - "operationId": "libops.v1.AdminSiteService.SyncManifest.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.SyncManifestRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.SyncManifestResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Sync site manifest - returns state hash and signed URLs to blobs (for eventual consistency) Called by site VMs every ~24h for eventual consistency", - "description": "Sync site manifest - returns state hash and signed URLs to blobs (for eventual consistency)\n Called by site VMs every ~24h for eventual consistency", - "operationId": "libops.v1.AdminSiteService.SyncManifest", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.SyncManifestRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.SyncManifestResponse" - } - } - } - } - } - } - }, - "/libops.v1.AdminSiteService/UpdateSite": { - "post": { - "tags": [ - "libops.v1.AdminSiteService" - ], - "summary": "Update site configuration (admin - can update all fields) [Requires: admin:system]", - "description": "Update site configuration (admin - can update all fields)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `admin:system`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| System | `admin:system` |\n", - "operationId": "libops.v1.AdminSiteService.UpdateSite", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminUpdateSiteRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AdminUpdateSiteResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "admin:system" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "admin:system" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "system:admin" - } - }, - "/libops.v1.AssistantService/Chat": { - "post": { - "tags": [ - "libops.v1.AssistantService" - ], - "summary": "Chat sends a user request to the assistant automation system. [Requires: write:organization]", - "description": "Chat sends a user request to the assistant automation system.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", - "operationId": "libops.v1.AssistantService.Chat", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AssistantChatRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.AssistantChatResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:organization" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.DomainService/CreateSiteDomain": { - "post": { - "tags": [ - "libops.v1.DomainService" - ], - "summary": "CreateSiteDomain", - "operationId": "libops.v1.DomainService.CreateSiteDomain", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteDomainRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteDomainResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:site" - ] - }, - { - "apiKey": [] - } - ], - "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |", - "x-scopes": [ - "write:site" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" - } - }, - "/libops.v1.DomainService/DeleteSiteDomain": { - "post": { - "tags": [ - "libops.v1.DomainService" - ], - "summary": "DeleteSiteDomain", - "operationId": "libops.v1.DomainService.DeleteSiteDomain", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteSiteDomainRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:site" - ] - }, - { - "apiKey": [] - } - ], - "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |", - "x-scopes": [ - "write:site" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" - } - }, - "/libops.v1.DomainService/ListSiteDomains": { - "get": { - "tags": [ - "libops.v1.DomainService" - ], - "summary": "ListSiteDomains", - "operationId": "libops.v1.DomainService.ListSiteDomains.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteDomainsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteDomainsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:site" - ] - }, - { - "apiKey": [] - } - ], - "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |", - "x-scopes": [ - "read:site" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" - }, - "post": { - "tags": [ - "libops.v1.DomainService" - ], - "summary": "ListSiteDomains", - "operationId": "libops.v1.DomainService.ListSiteDomains", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteDomainsRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteDomainsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:site" - ] - }, - { - "apiKey": [] - } - ], - "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |", - "x-scopes": [ - "read:site" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" - } - }, - "/libops.v1.FirewallService/CreateOrganizationFirewallRule": { - "post": { - "tags": [ - "libops.v1.FirewallService" - ], - "summary": "Add firewall rule applied to all sites for a organization [Requires: write:firewall]", - "description": "Add firewall rule applied to all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:firewall` |\n", - "operationId": "libops.v1.FirewallService.CreateOrganizationFirewallRule", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationFirewallRuleRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationFirewallRuleResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:firewall" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.FirewallService/DeleteOrganizationFirewallRule": { - "post": { - "tags": [ - "libops.v1.FirewallService" - ], - "summary": "Remove a firewall rule from all sites for a organization [Requires: delete:firewall]", - "description": "Remove a firewall rule from all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:firewall` |\n", - "operationId": "libops.v1.FirewallService.DeleteOrganizationFirewallRule", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteOrganizationFirewallRuleRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "delete:firewall" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "delete:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.FirewallService/ListOrganizationFirewallRules": { - "get": { - "tags": [ - "libops.v1.FirewallService" - ], - "summary": "List firewall rules applied to all sites for a organization [Requires: read:firewall]", - "description": "List firewall rules applied to all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n", - "operationId": "libops.v1.FirewallService.ListOrganizationFirewallRules.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:firewall" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - }, - "post": { - "tags": [ - "libops.v1.FirewallService" - ], - "summary": "List firewall rules applied to all sites for a organization [Requires: read:firewall]", - "description": "List firewall rules applied to all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n", - "operationId": "libops.v1.FirewallService.ListOrganizationFirewallRules", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:firewall" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.MemberService/CreateOrganizationMember": { - "post": { - "tags": [ - "libops.v1.MemberService" - ], - "summary": "Create a member in a organization [Requires: write:members]", - "description": "Create a member in a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n", - "operationId": "libops.v1.MemberService.CreateOrganizationMember", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationMemberRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationMemberResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:members" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:admin" - } - }, - "/libops.v1.MemberService/DeleteOrganizationMember": { - "post": { - "tags": [ - "libops.v1.MemberService" - ], - "summary": "Delete a member from a organization [Requires: delete:members]", - "description": "Delete a member from a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:members` |\n", - "operationId": "libops.v1.MemberService.DeleteOrganizationMember", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteOrganizationMemberRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "delete:members" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "delete:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:admin" - } - }, - "/libops.v1.MemberService/ListOrganizationMembers": { - "get": { - "tags": [ - "libops.v1.MemberService" - ], - "summary": "List members of a organization [Requires: read:members]", - "description": "List members of a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n", - "operationId": "libops.v1.MemberService.ListOrganizationMembers.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:members" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - }, - "post": { - "tags": [ - "libops.v1.MemberService" - ], - "summary": "List members of a organization [Requires: read:members]", - "description": "List members of a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n", - "operationId": "libops.v1.MemberService.ListOrganizationMembers", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:members" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.MemberService/UpdateOrganizationMember": { - "post": { - "tags": [ - "libops.v1.MemberService" - ], - "summary": "Update a member's role [Requires: write:members]", - "description": "Update a member's role\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n", - "operationId": "libops.v1.MemberService.UpdateOrganizationMember", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationMemberRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationMemberResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:members" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:admin" - } - }, - "/libops.v1.OperationService/GetOperation": { - "get": { - "tags": [ - "libops.v1.OperationService" - ], - "summary": "Get an operation by public operation ID or request ID.", - "description": "Get an operation by public operation ID or request ID.", - "operationId": "libops.v1.OperationService.GetOperation.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOperationRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOperationResponse" - } - } - } - } - } - }, - "post": { - "tags": [ - "libops.v1.OperationService" - ], - "summary": "Get an operation by public operation ID or request ID.", - "description": "Get an operation by public operation ID or request ID.", - "operationId": "libops.v1.OperationService.GetOperation", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOperationRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOperationResponse" - } - } - } - } - } - } - }, - "/libops.v1.OrganizationSecretService/CreateOrganizationSecret": { - "post": { - "tags": [ - "libops.v1.OrganizationSecretService" - ], - "summary": "Create an organization secret [Requires: manage_secrets]", - "description": "Create an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", - "operationId": "libops.v1.OrganizationSecretService.CreateOrganizationSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationSecretRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationSecretResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationSecretService/DeleteOrganizationSecret": { - "post": { - "tags": [ - "libops.v1.OrganizationSecretService" - ], - "summary": "Delete an organization secret [Requires: manage_secrets]", - "description": "Delete an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", - "operationId": "libops.v1.OrganizationSecretService.DeleteOrganizationSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteOrganizationSecretRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationSecretService/GetOrganizationSecret": { - "get": { - "tags": [ - "libops.v1.OrganizationSecretService" - ], - "summary": "Get an organization secret [Requires: manage_secrets]", - "description": "Get an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", - "operationId": "libops.v1.OrganizationSecretService.GetOrganizationSecret.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - }, - "post": { - "tags": [ - "libops.v1.OrganizationSecretService" - ], - "summary": "Get an organization secret [Requires: manage_secrets]", - "description": "Get an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", - "operationId": "libops.v1.OrganizationSecretService.GetOrganizationSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationSecretService/ListOrganizationSecrets": { - "get": { - "tags": [ - "libops.v1.OrganizationSecretService" - ], - "summary": "List organization secrets [Requires: manage_secrets]", - "description": "List organization secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", - "operationId": "libops.v1.OrganizationSecretService.ListOrganizationSecrets.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - }, - "post": { - "tags": [ - "libops.v1.OrganizationSecretService" - ], - "summary": "List organization secrets [Requires: manage_secrets]", - "description": "List organization secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", - "operationId": "libops.v1.OrganizationSecretService.ListOrganizationSecrets", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationSecretService/UpdateOrganizationSecret": { - "post": { - "tags": [ - "libops.v1.OrganizationSecretService" - ], - "summary": "Update an organization secret [Requires: manage_secrets]", - "description": "Update an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", - "operationId": "libops.v1.OrganizationSecretService.UpdateOrganizationSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSecretRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSecretResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationService/CreateOrganization": { - "post": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "Create a new organization [Requires: write:organization]", - "description": "Create a new organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:organization` |\n", - "operationId": "libops.v1.OrganizationService.CreateOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:organization" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:write" - } - }, - "/libops.v1.OrganizationService/DeleteOrganization": { - "post": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "Delete a organization (must have no projects) [Requires: delete:organization]", - "description": "Delete a organization (must have no projects)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:organization` |\n", - "operationId": "libops.v1.OrganizationService.DeleteOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteOrganizationRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "delete:organization" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "delete:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:admin" - } - }, - "/libops.v1.OrganizationService/GetOrganization": { - "get": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "Get organization configuration (organization view) [Requires: read:organization]", - "description": "Get organization configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", - "operationId": "libops.v1.OrganizationService.GetOrganization.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:organization" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" + "title": "GetOrganizationSettingResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "Get organization configuration (organization view) [Requires: read:organization]", - "description": "Get organization configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", - "operationId": "libops.v1.OrganizationService.GetOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:organization" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.OrganizationService/ListOrganizationProjects": { - "get": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "List projects for a organization [Requires: read:project]", - "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n", - "operationId": "libops.v1.OrganizationService.ListOrganizationProjects.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsResponse" - } - } - } + "libops.v1.GetProjectRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" + }, + "projectId": { + "title": "project_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] - }, - { - "apiKey": [] + "title": "GetProjectRequest", + "type": "object" + }, + "libops.v1.GetProjectResponse": { + "additionalProperties": false, + "properties": { + "project": { + "$ref": "#/components/schemas/libops.v1.common.ProjectConfig", + "title": "project" } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" + }, + "title": "GetProjectResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "List projects for a organization [Requires: read:project]", - "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n", - "operationId": "libops.v1.OrganizationService.ListOrganizationProjects", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.GetProjectRuntimeRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "runtimeId": { + "title": "runtime_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsResponse" - } - } - } + "title": "GetProjectRuntimeRequest", + "type": "object" + }, + "libops.v1.GetProjectRuntimeResponse": { + "additionalProperties": false, + "properties": { + "runtime": { + "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig", + "title": "runtime" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] + "title": "GetProjectRuntimeResponse", + "type": "object" + }, + "libops.v1.GetProjectSecretRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "apiKey": [] + "secretId": { + "title": "secret_id", + "type": "string" } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.OrganizationService/ListOrganizations": { - "get": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "List all organizations [Requires: read:organization]", - "description": "List all organizations\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", - "operationId": "libops.v1.OrganizationService.ListOrganizations.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationsRequest" - } - } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + }, + "title": "GetProjectSecretRequest", + "type": "object" + }, + "libops.v1.GetProjectSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.ProjectSecret", + "title": "secret" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + }, + "title": "GetProjectSecretResponse", + "type": "object" + }, + "libops.v1.GetProjectSettingRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationsResponse" - } - } - } + "settingId": { + "title": "setting_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "read:organization" - ] + "title": "GetProjectSettingRequest", + "type": "object" + }, + "libops.v1.GetProjectSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.ProjectSetting", + "title": "setting" + } + }, + "title": "GetProjectSettingResponse", + "type": "object" + }, + "libops.v1.GetSiteDomainRequest": { + "additionalProperties": false, + "properties": { + "domainId": { + "title": "domain_id", + "type": "string" }, - { - "apiKey": [] + "siteId": { + "title": "site_id", + "type": "string" + } + }, + "title": "GetSiteDomainRequest", + "type": "object" + }, + "libops.v1.GetSiteDomainResponse": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/components/schemas/libops.v1.common.DomainConfig", + "title": "domain" + } + }, + "title": "GetSiteDomainResponse", + "type": "object" + }, + "libops.v1.GetSiteRequest": { + "additionalProperties": false, + "properties": { + "siteId": { + "title": "site_id", + "type": "string" + } + }, + "title": "GetSiteRequest", + "type": "object" + }, + "libops.v1.GetSiteResponse": { + "additionalProperties": false, + "properties": { + "site": { + "$ref": "#/components/schemas/libops.v1.common.SiteConfig", + "title": "site" } - ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" + }, + "title": "GetSiteResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "List all organizations [Requires: read:organization]", - "description": "List all organizations\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", - "operationId": "libops.v1.OrganizationService.ListOrganizations", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.GetSiteSecretRequest": { + "additionalProperties": false, + "properties": { + "secretId": { + "title": "secret_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "siteId": { + "title": "site_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationsRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationsResponse" - } - } - } + "title": "GetSiteSecretRequest", + "type": "object" + }, + "libops.v1.GetSiteSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.SiteSecret", + "title": "secret" } }, - "security": [ - { - "oauth2": [ - "read:organization" - ] + "title": "GetSiteSecretResponse", + "type": "object" + }, + "libops.v1.GetSiteSettingRequest": { + "additionalProperties": false, + "properties": { + "settingId": { + "title": "setting_id", + "type": "string" }, - { - "apiKey": [] + "siteId": { + "title": "site_id", + "type": "string" } - ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" - } - }, - "/libops.v1.OrganizationService/UpdateOrganization": { - "post": { - "tags": [ - "libops.v1.OrganizationService" - ], - "summary": "Update organization metadata (organization-editable fields only) [Requires: write:organization]", - "description": "Update organization metadata (organization-editable fields only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", - "operationId": "libops.v1.OrganizationService.UpdateOrganization", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + }, + "title": "GetSiteSettingRequest", + "type": "object" + }, + "libops.v1.GetSiteSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.SiteSetting", + "title": "setting" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationResponse" - } - } - } + "title": "GetSiteSettingResponse", + "type": "object" + }, + "libops.v1.GetSiteStatusRequest": { + "additionalProperties": false, + "properties": { + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "write:organization" - ] - }, - { - "apiKey": [] + "title": "GetSiteStatusRequest", + "type": "object" + }, + "libops.v1.GetSiteStatusResponse": { + "additionalProperties": false, + "properties": { + "status": { + "$ref": "#/components/schemas/libops.v1.SiteStatus", + "title": "status" } - ], - "x-scopes": [ - "write:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationSettingService/CreateOrganizationSetting": { - "post": { - "tags": [ - "libops.v1.OrganizationSettingService" - ], - "summary": "Create an organization setting [Requires: manage_settings]", - "description": "Create an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n", - "operationId": "libops.v1.OrganizationSettingService.CreateOrganizationSetting", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "GetSiteStatusResponse", + "type": "object" + }, + "libops.v1.GetTaskRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "taskId": { + "title": "task_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationSettingRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateOrganizationSettingResponse" - } - } - } + "title": "GetTaskRequest", + "type": "object" + }, + "libops.v1.GetTaskResponse": { + "additionalProperties": false, + "properties": { + "task": { + "$ref": "#/components/schemas/libops.v1.Task", + "title": "task" } }, - "security": [ - { - "oauth2": [ - "manage_settings" - ] + "title": "GetTaskResponse", + "type": "object" + }, + "libops.v1.ListApiKeysRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "apiKey": [] + "pageToken": { + "description": "NO account_id filter - always lists the authenticated user's keys", + "title": "page_token", + "type": "string" } - ], - "x-scopes": [ - "manage_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationSettingService/DeleteOrganizationSetting": { - "post": { - "tags": [ - "libops.v1.OrganizationSettingService" - ], - "summary": "Delete an organization setting [Requires: manage_settings]", - "description": "Delete an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n", - "operationId": "libops.v1.OrganizationSettingService.DeleteOrganizationSetting", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListApiKeysRequest", + "type": "object" + }, + "libops.v1.ListApiKeysResponse": { + "additionalProperties": false, + "properties": { + "apiKeys": { + "items": { + "$ref": "#/components/schemas/libops.v1.ApiKeyMetadata" + }, + "title": "api_keys", + "type": "array" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "nextPageToken": { + "title": "next_page_token", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteOrganizationSettingRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "ListApiKeysResponse", + "type": "object" + }, + "libops.v1.ListOrganizationFirewallRulesRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" + }, + "pageToken": { + "title": "page_token", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "manage_settings" - ] + "title": "ListOrganizationFirewallRulesRequest", + "type": "object" + }, + "libops.v1.ListOrganizationFirewallRulesResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "apiKey": [] + "rules": { + "items": { + "$ref": "#/components/schemas/libops.v1.OrganizationFirewallRule" + }, + "title": "rules", + "type": "array" } - ], - "x-scopes": [ - "manage_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.OrganizationSettingService/GetOrganizationSetting": { - "get": { - "tags": [ - "libops.v1.OrganizationSettingService" - ], - "summary": "Get an organization setting [Requires: read_settings]", - "description": "Get an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", - "operationId": "libops.v1.OrganizationSettingService.GetOrganizationSetting.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListOrganizationFirewallRulesResponse", + "type": "object" + }, + "libops.v1.ListOrganizationMembersRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingRequest" - } - } - } + "pageToken": { + "title": "page_token", + "type": "string" + } + }, + "title": "ListOrganizationMembersRequest", + "type": "object" + }, + "libops.v1.ListOrganizationMembersResponse": { + "additionalProperties": false, + "properties": { + "members": { + "items": { + "$ref": "#/components/schemas/libops.v1.MemberDetail" + }, + "title": "members", + "type": "array" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "nextPageToken": { + "title": "next_page_token", + "type": "string" + } + }, + "title": "ListOrganizationMembersResponse", + "type": "object" + }, + "libops.v1.ListOrganizationProjectsRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "pageToken": { + "title": "page_token", + "type": "string" + } + }, + "title": "ListOrganizationProjectsRequest", + "type": "object" + }, + "libops.v1.ListOrganizationProjectsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "projectIds": { + "items": { + "type": "string" + }, + "title": "project_ids", + "type": "array" + } + }, + "title": "ListOrganizationProjectsResponse", + "type": "object" + }, + "libops.v1.ListOrganizationSecretsRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" + }, + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" + }, + "pageToken": { + "title": "page_token", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + }, + "title": "ListOrganizationSecretsRequest", + "type": "object" + }, + "libops.v1.ListOrganizationSecretsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingResponse" - } - } - } + "secrets": { + "items": { + "$ref": "#/components/schemas/libops.v1.OrganizationSecret" + }, + "title": "secrets", + "type": "array" } }, - "security": [ - { - "oauth2": [ - "read_settings" - ] + "title": "ListOrganizationSecretsResponse", + "type": "object" + }, + "libops.v1.ListOrganizationSettingsRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "apiKey": [] + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" + }, + "pageToken": { + "title": "page_token", + "type": "string" } - ], - "x-scopes": [ - "read_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" + }, + "title": "ListOrganizationSettingsRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.OrganizationSettingService" - ], - "summary": "Get an organization setting [Requires: read_settings]", - "description": "Get an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", - "operationId": "libops.v1.OrganizationSettingService.GetOrganizationSetting", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.ListOrganizationSettingsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "settings": { + "items": { + "$ref": "#/components/schemas/libops.v1.OrganizationSetting" + }, + "title": "settings", + "type": "array" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingRequest" - } - } + }, + "title": "ListOrganizationSettingsResponse", + "type": "object" + }, + "libops.v1.ListOrganizationsRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - "required": true + "pageToken": { + "title": "page_token", + "type": "string" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "ListOrganizationsRequest", + "type": "object" + }, + "libops.v1.ListOrganizationsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingResponse" - } - } - } + "organizations": { + "items": { + "$ref": "#/components/schemas/libops.v1.common.FolderConfig" + }, + "title": "organizations", + "type": "array" } }, - "security": [ - { - "oauth2": [ - "read_settings" - ] + "title": "ListOrganizationsResponse", + "type": "object" + }, + "libops.v1.ListProjectFirewallRulesRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "apiKey": [] + "pageToken": { + "title": "page_token", + "type": "string" + }, + "projectId": { + "title": "project_id", + "type": "string" } - ], - "x-scopes": [ - "read_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.OrganizationSettingService/ListOrganizationSettings": { - "get": { - "tags": [ - "libops.v1.OrganizationSettingService" - ], - "summary": "List organization settings [Requires: read_settings]", - "description": "List organization settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", - "operationId": "libops.v1.OrganizationSettingService.ListOrganizationSettings.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListProjectFirewallRulesRequest", + "type": "object" + }, + "libops.v1.ListProjectFirewallRulesResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "rules": { + "items": { + "$ref": "#/components/schemas/libops.v1.ProjectFirewallRule" + }, + "title": "rules", + "type": "array" + } + }, + "title": "ListProjectFirewallRulesResponse", + "type": "object" + }, + "libops.v1.ListProjectMembersRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsRequest" - } - } - } + "pageToken": { + "title": "page_token", + "type": "string" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "projectId": { + "title": "project_id", + "type": "string" + } + }, + "title": "ListProjectMembersRequest", + "type": "object" + }, + "libops.v1.ListProjectMembersResponse": { + "additionalProperties": false, + "properties": { + "members": { + "items": { + "$ref": "#/components/schemas/libops.v1.MemberDetail" + }, + "title": "members", + "type": "array" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "nextPageToken": { + "title": "next_page_token", + "type": "string" + } + }, + "title": "ListProjectMembersResponse", + "type": "object" + }, + "libops.v1.ListProjectRuntimesRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "pageToken": { + "title": "page_token", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "projectId": { + "title": "project_id", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + }, + "title": "ListProjectRuntimesRequest", + "type": "object" + }, + "libops.v1.ListProjectRuntimesResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsResponse" - } - } - } + "runtimes": { + "items": { + "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig" + }, + "title": "runtimes", + "type": "array" } }, - "security": [ - { - "oauth2": [ - "read_settings" - ] + "title": "ListProjectRuntimesResponse", + "type": "object" + }, + "libops.v1.ListProjectSecretsRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "apiKey": [] + "pageToken": { + "title": "page_token", + "type": "string" + }, + "projectId": { + "title": "project_id", + "type": "string" } - ], - "x-scopes": [ - "read_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" + }, + "title": "ListProjectSecretsRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.OrganizationSettingService" - ], - "summary": "List organization settings [Requires: read_settings]", - "description": "List organization settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", - "operationId": "libops.v1.OrganizationSettingService.ListOrganizationSettings", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.ListProjectSecretsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "secrets": { + "items": { + "$ref": "#/components/schemas/libops.v1.ProjectSecret" + }, + "title": "secrets", + "type": "array" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "ListProjectSecretsResponse", + "type": "object" + }, + "libops.v1.ListProjectSettingsRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsResponse" - } - } - } + "pageToken": { + "title": "page_token", + "type": "string" + }, + "projectId": { + "title": "project_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "read_settings" - ] + "title": "ListProjectSettingsRequest", + "type": "object" + }, + "libops.v1.ListProjectSettingsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "apiKey": [] + "settings": { + "items": { + "$ref": "#/components/schemas/libops.v1.ProjectSetting" + }, + "title": "settings", + "type": "array" } - ], - "x-scopes": [ - "read_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.OrganizationSettingService/UpdateOrganizationSetting": { - "post": { - "tags": [ - "libops.v1.OrganizationSettingService" - ], - "summary": "Update an organization setting [Requires: manage_settings]", - "description": "Update an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n", - "operationId": "libops.v1.OrganizationSettingService.UpdateOrganizationSetting", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListProjectSettingsResponse", + "type": "object" + }, + "libops.v1.ListProjectSitesRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "pageToken": { + "title": "page_token", + "type": "string" + }, + "projectId": { + "title": "project_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSettingRequest" - } - } + }, + "title": "ListProjectSitesRequest", + "type": "object" + }, + "libops.v1.ListProjectSitesResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - "required": true + "siteNames": { + "items": { + "type": "string" + }, + "title": "site_names", + "type": "array" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "ListProjectSitesResponse", + "type": "object" + }, + "libops.v1.ListProjectsRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "nullable": true, + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSettingResponse" - } - } - } + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" + }, + "pageToken": { + "title": "page_token", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "manage_settings" - ] + "title": "ListProjectsRequest", + "type": "object" + }, + "libops.v1.ListProjectsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "apiKey": [] + "projects": { + "items": { + "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" + }, + "title": "projects", + "type": "array" } - ], - "x-scopes": [ - "manage_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.ProjectFirewallService/CreateProjectFirewallRule": { - "post": { - "tags": [ - "libops.v1.ProjectFirewallService" - ], - "summary": "Add firewall rule to all sites in a project [Requires: write:firewall]", - "description": "Add firewall rule to all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:firewall` |\n| Project | `write:firewall` |\n", - "operationId": "libops.v1.ProjectFirewallService.CreateProjectFirewallRule", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListProjectsResponse", + "type": "object" + }, + "libops.v1.ListSiteDomainsRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "pageToken": { + "title": "page_token", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectFirewallRuleRequest" - } - } + }, + "title": "ListSiteDomainsRequest", + "type": "object" + }, + "libops.v1.ListSiteDomainsResponse": { + "additionalProperties": false, + "properties": { + "domains": { + "items": { + "$ref": "#/components/schemas/libops.v1.common.DomainConfig" + }, + "title": "domains", + "type": "array" }, - "required": true + "nextPageToken": { + "title": "next_page_token", + "type": "string" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "ListSiteDomainsResponse", + "type": "object" + }, + "libops.v1.ListSiteFirewallRulesRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectFirewallRuleResponse" - } - } - } + "pageToken": { + "title": "page_token", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "write:firewall" - ] + "title": "ListSiteFirewallRulesRequest", + "type": "object" + }, + "libops.v1.ListSiteFirewallRulesResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "apiKey": [] + "rules": { + "items": { + "$ref": "#/components/schemas/libops.v1.SiteFirewallRule" + }, + "title": "rules", + "type": "array" } - ], - "x-scopes": [ - "write:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectFirewallService/DeleteProjectFirewallRule": { - "post": { - "tags": [ - "libops.v1.ProjectFirewallService" - ], - "summary": "Remove a firewall rule from all sites in a project [Requires: delete:firewall]", - "description": "Remove a firewall rule from all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:firewall` |\n| Project | `delete:firewall` |\n", - "operationId": "libops.v1.ProjectFirewallService.DeleteProjectFirewallRule", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListSiteFirewallRulesResponse", + "type": "object" + }, + "libops.v1.ListSiteMembersRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "pageToken": { + "title": "page_token", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteProjectFirewallRuleRequest" - } - } + }, + "title": "ListSiteMembersRequest", + "type": "object" + }, + "libops.v1.ListSiteMembersResponse": { + "additionalProperties": false, + "properties": { + "members": { + "items": { + "$ref": "#/components/schemas/libops.v1.MemberDetail" + }, + "title": "members", + "type": "array" }, - "required": true + "nextPageToken": { + "title": "next_page_token", + "type": "string" + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "ListSiteMembersResponse", + "type": "object" + }, + "libops.v1.ListSiteSecretsRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } + "pageToken": { + "title": "page_token", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "delete:firewall" - ] + "title": "ListSiteSecretsRequest", + "type": "object" + }, + "libops.v1.ListSiteSecretsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "apiKey": [] + "secrets": { + "items": { + "$ref": "#/components/schemas/libops.v1.SiteSecret" + }, + "title": "secrets", + "type": "array" } - ], - "x-scopes": [ - "delete:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectFirewallService/ListProjectFirewallRules": { - "get": { - "tags": [ - "libops.v1.ProjectFirewallService" - ], - "summary": "List firewall rules applied to all sites in a project [Requires: read:firewall]", - "description": "List firewall rules applied to all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n", - "operationId": "libops.v1.ProjectFirewallService.ListProjectFirewallRules.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListSiteSecretsResponse", + "type": "object" + }, + "libops.v1.ListSiteSettingsRequest": { + "additionalProperties": false, + "properties": { + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "pageToken": { + "title": "page_token", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesRequest" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" + } + }, + "title": "ListSiteSettingsRequest", + "type": "object" + }, + "libops.v1.ListSiteSettingsResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "settings": { + "items": { + "$ref": "#/components/schemas/libops.v1.SiteSetting" + }, + "title": "settings", + "type": "array" + } + }, + "title": "ListSiteSettingsResponse", + "type": "object" + }, + "libops.v1.ListSitesRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "nullable": true, + "title": "organization_id", + "type": "string" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "pageToken": { + "title": "page_token", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "projectId": { + "nullable": true, + "title": "project_id", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + }, + "title": "ListSitesRequest", + "type": "object" + }, + "libops.v1.ListSitesResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesResponse" - } - } - } + "sites": { + "items": { + "$ref": "#/components/schemas/libops.v1.common.SiteConfig" + }, + "title": "sites", + "type": "array" } }, - "security": [ - { - "oauth2": [ - "read:firewall" - ] + "title": "ListSitesResponse", + "type": "object" + }, + "libops.v1.ListSshKeysRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - { - "apiKey": [] + "pageSize": { + "format": "int32", + "title": "page_size", + "type": "integer" + }, + "pageToken": { + "title": "page_token", + "type": "string" } - ], - "x-scopes": [ - "read:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + }, + "title": "ListSshKeysRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.ProjectFirewallService" - ], - "summary": "List firewall rules applied to all sites in a project [Requires: read:firewall]", - "description": "List firewall rules applied to all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n", - "operationId": "libops.v1.ProjectFirewallService.ListProjectFirewallRules", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.ListSshKeysResponse": { + "additionalProperties": false, + "properties": { + "nextPageToken": { + "title": "next_page_token", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "sshKeys": { + "items": { + "$ref": "#/components/schemas/libops.v1.SshKey" + }, + "title": "ssh_keys", + "type": "array" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesRequest" - } - } + }, + "title": "ListSshKeysResponse", + "type": "object" + }, + "libops.v1.ListTasksRequest": { + "additionalProperties": false, + "properties": { + "limit": { + "format": "int32", + "title": "limit", + "type": "integer" + }, + "offset": { + "format": "int32", + "title": "offset", + "type": "integer" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "organizationId": { + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesResponse" - } - } - } + "projectId": { + "title": "project_id", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "read:firewall" - ] + "title": "ListTasksRequest", + "type": "object" + }, + "libops.v1.ListTasksResponse": { + "additionalProperties": false, + "properties": { + "taskUsage": { + "$ref": "#/components/schemas/libops.v1.TaskUsageBudget", + "title": "task_usage" }, - { - "apiKey": [] + "tasks": { + "items": { + "$ref": "#/components/schemas/libops.v1.Task" + }, + "title": "tasks", + "type": "array" } - ], - "x-scopes": [ - "read:firewall" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" - } - }, - "/libops.v1.ProjectMemberService/CreateProjectMember": { - "post": { - "tags": [ - "libops.v1.ProjectMemberService" - ], - "summary": "Add a member to a project [Requires: write:members]", - "description": "Add a member to a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n", - "operationId": "libops.v1.ProjectMemberService.CreateProjectMember", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ListTasksResponse", + "type": "object" + }, + "libops.v1.MemberDetail": { + "additionalProperties": false, + "properties": { + "accountId": { + "description": "Account ID of the member", + "title": "account_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectMemberRequest" - } - } + "email": { + "description": "Member's email", + "title": "email", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "githubUsername": { + "description": "GitHub username", + "nullable": true, + "title": "github_username", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectMemberResponse" - } - } - } + "memberId": { + "description": "Member ID (public_id of the membership)", + "title": "member_id", + "type": "string" + }, + "name": { + "description": "Member's display name", + "title": "name", + "type": "string" + }, + "role": { + "description": "\"owner\", \"developer\", \"read\"", + "title": "role", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "description": "Member status", + "title": "status" } }, - "security": [ - { - "oauth2": [ - "write:members" + "title": "MemberDetail", + "type": "object" + }, + "libops.v1.Operation": { + "additionalProperties": false, + "properties": { + "completedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "completed_at" + }, + "createdAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "created_at" + }, + "errorMessage": { + "title": "error_message", + "type": "string" + }, + "eventCompletedCount": { + "format": "int64", + "title": "event_completed_count", + "type": [ + "integer", + "string" ] }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:admin" - } - }, - "/libops.v1.ProjectMemberService/DeleteProjectMember": { - "post": { - "tags": [ - "libops.v1.ProjectMemberService" - ], - "summary": "Remove a member from a project [Requires: delete:members]", - "description": "Remove a member from a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:members` |\n| Project | `delete:members` |\n", - "operationId": "libops.v1.ProjectMemberService.DeleteProjectMember", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "eventCount": { + "format": "int64", + "title": "event_count", + "type": [ + "integer", + "string" + ] }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteProjectMemberRequest" - } - } + "eventFailedCount": { + "format": "int64", + "title": "event_failed_count", + "type": [ + "integer", + "string" + ] }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "operationId": { + "title": "operation_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "delete:members" + "operationType": { + "title": "operation_type", + "type": "string" + }, + "publishCompletedCount": { + "format": "int64", + "title": "publish_completed_count", + "type": [ + "integer", + "string" + ] + }, + "publishCount": { + "format": "int64", + "title": "publish_count", + "type": [ + "integer", + "string" ] }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "delete:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:admin" - } - }, - "/libops.v1.ProjectMemberService/ListProjectMembers": { - "get": { - "tags": [ - "libops.v1.ProjectMemberService" - ], - "summary": "List members of a project [Requires: read:members]", - "description": "List members of a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n", - "operationId": "libops.v1.ProjectMemberService.ListProjectMembers.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "publishFailedCount": { + "format": "int64", + "title": "publish_failed_count", + "type": [ + "integer", + "string" + ] }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "reconciliationCompletedCount": { + "format": "int64", + "title": "reconciliation_completed_count", + "type": [ + "integer", + "string" + ] }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectMembersRequest" - } - } - } + "reconciliationCount": { + "format": "int64", + "title": "reconciliation_count", + "type": [ + "integer", + "string" + ] }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "reconciliationFailedCount": { + "format": "int64", + "title": "reconciliation_failed_count", + "type": [ + "integer", + "string" + ] }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "requestId": { + "title": "request_id", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "status": { + "$ref": "#/components/schemas/libops.v1.OperationStatus", + "title": "status" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "updatedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "updated_at" } + }, + "title": "Operation", + "type": "object" + }, + "libops.v1.OperationStatus": { + "enum": [ + "OPERATION_STATUS_UNSPECIFIED", + "OPERATION_STATUS_RUNNING", + "OPERATION_STATUS_SUCCEEDED", + "OPERATION_STATUS_FAILED", + "OPERATION_STATUS_CANCELED" ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "OperationStatus", + "type": "string" + }, + "libops.v1.OrganizationAccount": { + "additionalProperties": false, + "properties": { + "accountId": { + "description": "Unique account identifier (UUID)", + "title": "account_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectMembersResponse" - } - } - } + "authMethod": { + "$ref": "#/components/schemas/libops.v1.common.AuthMethod", + "description": "How the user authenticates", + "title": "auth_method" + }, + "email": { + "description": "User's email address", + "title": "email", + "type": "string" + }, + "name": { + "description": "Display name", + "title": "name", + "type": "string" + }, + "verified": { + "description": "Email verification status", + "title": "verified", + "type": "boolean" } }, - "security": [ - { - "oauth2": [ - "read:members" - ] + "title": "OrganizationAccount", + "type": "object" + }, + "libops.v1.OrganizationFirewallRule": { + "additionalProperties": false, + "properties": { + "cidr": { + "description": "CIDR block (e.g., \"203.0.113.0/24\")", + "title": "cidr", + "type": "string" }, - { - "apiKey": [] + "name": { + "description": "Human-readable name for the rule", + "title": "name", + "type": "string" + }, + "organizationId": { + "description": "Organization this rule applies to", + "title": "organization_id", + "type": "string" + }, + "ruleId": { + "description": "Unique rule identifier", + "title": "rule_id", + "type": "string" + }, + "ruleType": { + "$ref": "#/components/schemas/libops.v1.FirewallRuleType", + "description": "Type of rule", + "title": "rule_type" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "description": "Rule status", + "title": "status" } - ], - "x-scopes": [ - "read:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + }, + "title": "OrganizationFirewallRule", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.ProjectMemberService" - ], - "summary": "List members of a project [Requires: read:members]", - "description": "List members of a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n", - "operationId": "libops.v1.ProjectMemberService.ListProjectMembers", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.OrganizationSecret": { + "additionalProperties": false, + "properties": { + "name": { + "description": "Environment variable name (e.g., DATABASE_URL)", + "title": "name", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectMembersRequest" - } - } + "organizationId": { + "description": "UUID", + "title": "organization_id", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "secretId": { + "description": "UUID", + "title": "secret_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectMembersResponse" - } - } - } + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" } }, - "security": [ - { - "oauth2": [ - "read:members" - ] + "title": "OrganizationSecret", + "type": "object" + }, + "libops.v1.OrganizationSetting": { + "additionalProperties": false, + "properties": { + "description": { + "description": "Optional description", + "title": "description", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" - } - }, - "/libops.v1.ProjectMemberService/UpdateProjectMember": { - "post": { - "tags": [ - "libops.v1.ProjectMemberService" - ], - "summary": "Update a member's role [Requires: write:members]", - "description": "Update a member's role\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n", - "operationId": "libops.v1.ProjectMemberService.UpdateProjectMember", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "editable": { + "description": "Can users modify this?", + "title": "editable", + "type": "boolean" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectMemberRequest" - } - } + "key": { + "description": "e.g., \"max_projects\"", + "title": "key", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "organizationId": { + "description": "UUID", + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectMemberResponse" - } - } - } + "settingId": { + "description": "UUID", + "title": "setting_id", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" + }, + "value": { + "description": "Stored as string", + "title": "value", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "write:members" - ] + "title": "OrganizationSetting", + "type": "object" + }, + "libops.v1.ProjectFirewallRule": { + "additionalProperties": false, + "properties": { + "cidr": { + "description": "CIDR block", + "title": "cidr", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:members" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:admin" - } - }, - "/libops.v1.ProjectSecretService/CreateProjectSecret": { - "post": { - "tags": [ - "libops.v1.ProjectSecretService" - ], - "summary": "Create a project secret [Requires: manage_secrets]", - "description": "Create a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", - "operationId": "libops.v1.ProjectSecretService.CreateProjectSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "name": { + "description": "Human-readable name", + "title": "name", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectSecretRequest" - } - } + "projectId": { + "description": "Project this rule applies to", + "title": "project_id", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "ruleId": { + "description": "Unique rule identifier", + "title": "rule_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectSecretResponse" - } - } - } + "ruleType": { + "$ref": "#/components/schemas/libops.v1.FirewallRuleType", + "description": "Type of rule", + "title": "rule_type" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "description": "Rule status", + "title": "status" } }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] + "title": "ProjectFirewallRule", + "type": "object" + }, + "libops.v1.ProjectSecret": { + "additionalProperties": false, + "properties": { + "name": { + "description": "Environment variable name", + "title": "name", + "type": "string" }, - { - "apiKey": [] + "projectId": { + "description": "UUID", + "title": "project_id", + "type": "string" + }, + "secretId": { + "description": "UUID", + "title": "secret_id", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectSecretService/DeleteProjectSecret": { - "post": { - "tags": [ - "libops.v1.ProjectSecretService" - ], - "summary": "Delete a project secret [Requires: manage_secrets]", - "description": "Delete a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", - "operationId": "libops.v1.ProjectSecretService.DeleteProjectSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "ProjectSecret", + "type": "object" + }, + "libops.v1.ProjectSetting": { + "additionalProperties": false, + "properties": { + "description": { + "title": "description", + "type": "string" + }, + "editable": { + "title": "editable", + "type": "boolean" + }, + "key": { + "description": "e.g., \"php_op_mode\", \"ENV_LOG_LEVEL\"", + "title": "key", + "type": "string" + }, + "projectId": { + "description": "UUID", + "title": "project_id", + "type": "string" + }, + "settingId": { + "description": "UUID", + "title": "setting_id", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "value": { + "title": "value", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteProjectSecretRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "ProjectSetting", + "type": "object" + }, + "libops.v1.RetrySiteDomainProvisioningRequest": { + "additionalProperties": false, + "properties": { + "domainId": { + "title": "domain_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] + "title": "RetrySiteDomainProvisioningRequest", + "type": "object" + }, + "libops.v1.RetrySiteDomainProvisioningResponse": { + "additionalProperties": false, + "properties": { + "domain": { + "$ref": "#/components/schemas/libops.v1.common.DomainConfig", + "title": "domain" }, - { - "apiKey": [] + "ownershipProof": { + "$ref": "#/components/schemas/libops.v1.common.DnsRecordInstruction", + "title": "ownership_proof" } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectSecretService/GetProjectSecret": { - "get": { - "tags": [ - "libops.v1.ProjectSecretService" - ], - "summary": "Get a project secret [Requires: manage_secrets]", - "description": "Get a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", - "operationId": "libops.v1.ProjectSecretService.GetProjectSecret.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "RetrySiteDomainProvisioningResponse", + "type": "object" + }, + "libops.v1.RevokeApiKeyRequest": { + "additionalProperties": false, + "properties": { + "apiKeyId": { + "description": "UUID of the key to revoke", + "title": "api_key_id", + "type": "string" + } + }, + "title": "RevokeApiKeyRequest", + "type": "object" + }, + "libops.v1.RevokeApiKeyResponse": { + "additionalProperties": false, + "properties": { + "success": { + "title": "success", + "type": "boolean" + } + }, + "title": "RevokeApiKeyResponse", + "type": "object" + }, + "libops.v1.SiteFirewallRule": { + "additionalProperties": false, + "properties": { + "cidr": { + "description": "CIDR block", + "title": "cidr", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "name": { + "description": "Human-readable name", + "title": "name", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSecretRequest" - } - } - } + "ruleId": { + "description": "Unique rule identifier", + "title": "rule_id", + "type": "string" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "ruleType": { + "$ref": "#/components/schemas/libops.v1.FirewallRuleType", + "description": "Type of rule", + "title": "rule_type" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "siteId": { + "description": "Site this rule applies to", + "title": "site_id", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "description": "Rule status", + "title": "status" + } + }, + "title": "SiteFirewallRule", + "type": "object" + }, + "libops.v1.SiteSecret": { + "additionalProperties": false, + "properties": { + "name": { + "description": "Environment variable name", + "title": "name", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "secretId": { + "description": "UUID", + "title": "secret_id", + "type": "string" + }, + "siteId": { + "description": "UUID", + "title": "site_id", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + }, + "title": "SiteSecret", + "type": "object" + }, + "libops.v1.SiteSetting": { + "additionalProperties": false, + "properties": { + "description": { + "title": "description", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSecretResponse" - } - } - } + "editable": { + "title": "editable", + "type": "boolean" + }, + "key": { + "description": "e.g., \"ENV_LOG_LEVEL\" (overrides project)", + "title": "key", + "type": "string" + }, + "settingId": { + "description": "UUID", + "title": "setting_id", + "type": "string" + }, + "siteId": { + "description": "UUID", + "title": "site_id", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" + }, + "value": { + "title": "value", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] + "title": "SiteSetting", + "type": "object" + }, + "libops.v1.SiteStatus": { + "additionalProperties": false, + "properties": { + "deployedAt": { + "description": "Timestamp of last deployment", + "nullable": true, + "title": "deployed_at", + "type": "string" }, - { - "apiKey": [] + "message": { + "description": "Status message", + "nullable": true, + "title": "message", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" + }, + "status": { + "description": "\"pending\", \"deploying\", \"deployed\", \"failed\"", + "title": "status", + "type": "string" } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" + }, + "title": "SiteStatus", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.ProjectSecretService" - ], - "summary": "Get a project secret [Requires: manage_secrets]", - "description": "Get a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", - "operationId": "libops.v1.ProjectSecretService.GetProjectSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "libops.v1.SshKey": { + "additionalProperties": false, + "properties": { + "accountId": { + "description": "UUID of account that owns this key", + "title": "account_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSecretRequest" - } - } + "fingerprint": { + "description": "Key fingerprint (computed)", + "nullable": true, + "title": "fingerprint", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "keyId": { + "description": "UUID", + "title": "key_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSecretResponse" - } - } - } + "name": { + "description": "User-friendly name", + "nullable": true, + "title": "name", + "type": "string" + }, + "publicKey": { + "description": "SSH public key content", + "title": "public_key", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] + "title": "SshKey", + "type": "object" + }, + "libops.v1.Task": { + "additionalProperties": false, + "properties": { + "agentModel": { + "title": "agent_model", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectSecretService/ListProjectSecrets": { - "get": { - "tags": [ - "libops.v1.ProjectSecretService" - ], - "summary": "List a project's secrets [Requires: manage_secrets]", - "description": "List a project's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", - "operationId": "libops.v1.ProjectSecretService.ListProjectSecrets.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "completedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "completed_at" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "createdAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "created_at" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSecretsRequest" - } - } - } + "harness": { + "$ref": "#/components/schemas/libops.v1.TaskHarness", + "title": "harness" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "inputRequest": { + "$ref": "#/components/schemas/libops.v1.TaskInput", + "title": "input_request" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "inputResponse": { + "$ref": "#/components/schemas/libops.v1.TaskInput", + "title": "input_response" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "logs": { + "items": { + "$ref": "#/components/schemas/libops.v1.TaskLogEntry" + }, + "title": "logs", + "type": "array" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "messages": { + "items": { + "$ref": "#/components/schemas/libops.v1.TaskMessage" + }, + "title": "messages", + "type": "array" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSecretsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - }, - "post": { - "tags": [ - "libops.v1.ProjectSecretService" - ], - "summary": "List a project's secrets [Requires: manage_secrets]", - "description": "List a project's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", - "operationId": "libops.v1.ProjectSecretService.ListProjectSecrets", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSecretsRequest" - } - } + "prompt": { + "title": "prompt", + "type": "string" + }, + "results": { + "items": { + "$ref": "#/components/schemas/libops.v1.TaskResult" + }, + "title": "results", + "type": "array" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSecretsResponse" - } - } - } + "startedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "started_at" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.TaskStatus", + "title": "status" + }, + "taskId": { + "title": "task_id", + "type": "string" + }, + "updatedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "updated_at" } }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] + "title": "Task", + "type": "object" + }, + "libops.v1.TaskApiAction": { + "additionalProperties": false, + "properties": { + "body": { + "$ref": "#/components/schemas/google.protobuf.Struct", + "title": "body" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectSecretService/UpdateProjectSecret": { - "post": { - "tags": [ - "libops.v1.ProjectSecretService" - ], - "summary": "Update a project secret [Requires: manage_secrets]", - "description": "Update a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", - "operationId": "libops.v1.ProjectSecretService.UpdateProjectSecret", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "description": { + "title": "description", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectSecretRequest" - } - } + "headers": { + "$ref": "#/components/schemas/google.protobuf.Struct", + "title": "headers" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "method": { + "title": "method", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectSecretResponse" - } - } - } + "path": { + "title": "path", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "manage_secrets" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectService/CreateProject": { - "post": { - "tags": [ - "libops.v1.ProjectService" + "title": "TaskApiAction", + "type": "object" + }, + "libops.v1.TaskHarness": { + "enum": [ + "TASK_HARNESS_UNSPECIFIED", + "TASK_HARNESS_CODEX", + "TASK_HARNESS_CLAUDE", + "TASK_HARNESS_PI", + "TASK_HARNESS_OPENCODE", + "TASK_HARNESS_GEMINI" ], - "summary": "Create a new project (organization) [Requires: write:organization]", - "description": "Create a new project (organization)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", - "operationId": "libops.v1.ProjectService.CreateProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "title": "TaskHarness", + "type": "string" + }, + "libops.v1.TaskInput": { + "additionalProperties": false, + "properties": { + "fields": { + "$ref": "#/components/schemas/google.protobuf.Struct", + "title": "fields" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "message": { + "title": "message", + "type": "string" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "TaskInput", + "type": "object" + }, + "libops.v1.TaskLogEntry": { + "additionalProperties": false, + "properties": { + "attributes": { + "$ref": "#/components/schemas/google.protobuf.Struct", + "title": "attributes" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:organization" - ] + "level": { + "title": "level", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - }, - "/libops.v1.ProjectService/CreateProjectRuntime": { - "post": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "Create a runtime host for a project. [Requires: write:project]", - "description": "Create a runtime host for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:project` |\n| Project | `write:project` |\n", - "operationId": "libops.v1.ProjectService.CreateProjectRuntime", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "message": { + "title": "message", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "timestamp": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "timestamp" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectRuntimeRequest" - } - } + }, + "title": "TaskLogEntry", + "type": "object" + }, + "libops.v1.TaskMessage": { + "additionalProperties": false, + "properties": { + "content": { + "title": "content", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "createdAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "created_at" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectRuntimeResponse" - } - } - } + "role": { + "title": "role", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "write:project" - ] + "title": "TaskMessage", + "type": "object" + }, + "libops.v1.TaskResult": { + "additionalProperties": false, + "properties": { + "apiAction": { + "$ref": "#/components/schemas/libops.v1.TaskApiAction", + "title": "api_action" }, - { - "apiKey": [] + "deploymentId": { + "title": "deployment_id", + "type": "string" + }, + "metadata": { + "$ref": "#/components/schemas/google.protobuf.Struct", + "title": "metadata" + }, + "prUrl": { + "title": "pr_url", + "type": "string" + }, + "projectId": { + "title": "project_id", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/libops.v1.TaskResultType", + "title": "type" } + }, + "title": "TaskResult", + "type": "object" + }, + "libops.v1.TaskResultType": { + "enum": [ + "TASK_RESULT_UNSPECIFIED", + "TASK_RESULT_PROJECT_CREATED", + "TASK_RESULT_PR_CREATED", + "TASK_RESULT_DEPLOYMENT", + "TASK_RESULT_API_ACTION" ], - "x-scopes": [ - "write:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectService/DeleteProject": { - "post": { - "tags": [ - "libops.v1.ProjectService" + "title": "TaskResultType", + "type": "string" + }, + "libops.v1.TaskStatus": { + "enum": [ + "TASK_STATUS_UNSPECIFIED", + "TASK_STATUS_QUEUED", + "TASK_STATUS_RUNNING", + "TASK_STATUS_NEEDS_INPUT", + "TASK_STATUS_FAILED", + "TASK_STATUS_COMPLETED", + "TASK_STATUS_CANCELED" ], - "summary": "Delete a project (must have no sites) [Requires: delete:project]", - "description": "Delete a project (must have no sites)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:project` |\n| Project | `delete:project` |\n", - "operationId": "libops.v1.ProjectService.DeleteProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "title": "TaskStatus", + "type": "string" + }, + "libops.v1.TaskUsageBudget": { + "additionalProperties": false, + "properties": { + "limit": { + "format": "int64", + "title": "limit", + "type": [ + "integer", + "string" + ] }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteProjectRequest" - } - } + "metricKey": { + "title": "metric_key", + "type": "string" }, - "required": true + "period": { + "title": "period", + "type": "string" + }, + "periodEnd": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "period_end" + }, + "periodStart": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "period_start" + }, + "remaining": { + "format": "int64", + "title": "remaining", + "type": [ + "integer", + "string" + ] + }, + "source": { + "title": "source", + "type": "string" + }, + "used": { + "format": "int64", + "title": "used", + "type": [ + "integer", + "string" + ] + } }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "TaskUsageBudget", + "type": "object" + }, + "libops.v1.UpdateOrganizationMemberRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" - } - } - } + "organizationId": { + "title": "organization_id", + "type": "string" + }, + "role": { + "description": "New role", + "title": "role", + "type": "string" + }, + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" } }, - "security": [ - { - "oauth2": [ - "delete:project" - ] + "title": "UpdateOrganizationMemberRequest", + "type": "object" + }, + "libops.v1.UpdateOrganizationMemberResponse": { + "additionalProperties": false, + "properties": { + "member": { + "$ref": "#/components/schemas/libops.v1.MemberDetail", + "title": "member" + } + }, + "title": "UpdateOrganizationMemberResponse", + "type": "object" + }, + "libops.v1.UpdateOrganizationRequest": { + "additionalProperties": false, + "properties": { + "folder": { + "$ref": "#/components/schemas/libops.v1.common.FolderConfig", + "title": "folder" }, - { - "apiKey": [] + "organizationId": { + "title": "organization_id", + "type": "string" + }, + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" } - ], - "x-scopes": [ - "delete:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:admin" - } - }, - "/libops.v1.ProjectService/GetProject": { - "get": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "Get project configuration (organization view) [Requires: read:project]", - "description": "Get project configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.GetProject.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "UpdateOrganizationRequest", + "type": "object" + }, + "libops.v1.UpdateOrganizationResponse": { + "additionalProperties": false, + "properties": { + "folder": { + "$ref": "#/components/schemas/libops.v1.common.FolderConfig", + "title": "folder" + } + }, + "title": "UpdateOrganizationResponse", + "type": "object" + }, + "libops.v1.UpdateOrganizationSecretRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "secretId": { + "title": "secret_id", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectRequest" - } - } - } + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "value": { + "description": "Updated secret value", + "nullable": true, + "title": "value", + "type": "string" + } + }, + "title": "UpdateOrganizationSecretRequest", + "type": "object" + }, + "libops.v1.UpdateOrganizationSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.OrganizationSecret", + "title": "secret" + } + }, + "title": "UpdateOrganizationSecretResponse", + "type": "object" + }, + "libops.v1.UpdateOrganizationSettingRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "settingId": { + "title": "setting_id", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "value": { + "nullable": true, + "title": "value", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectResponse" - } - } - } + }, + "title": "UpdateOrganizationSettingRequest", + "type": "object" + }, + "libops.v1.UpdateOrganizationSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.OrganizationSetting", + "title": "setting" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] + "title": "UpdateOrganizationSettingResponse", + "type": "object" + }, + "libops.v1.UpdateProjectMemberRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - { - "apiKey": [] + "projectId": { + "title": "project_id", + "type": "string" + }, + "role": { + "description": "New role", + "title": "role", + "type": "string" + }, + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + }, + "title": "UpdateProjectMemberRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "Get project configuration (organization view) [Requires: read:project]", - "description": "Get project configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.GetProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "libops.v1.UpdateProjectMemberResponse": { + "additionalProperties": false, + "properties": { + "member": { + "$ref": "#/components/schemas/libops.v1.MemberDetail", + "title": "member" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "UpdateProjectMemberResponse", + "type": "object" + }, + "libops.v1.UpdateProjectRequest": { + "additionalProperties": false, + "properties": { + "organizationId": { + "title": "organization_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectResponse" - } - } - } + "project": { + "$ref": "#/components/schemas/libops.v1.common.ProjectConfig", + "title": "project" + }, + "projectId": { + "title": "project_id", + "type": "string" + }, + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] - }, - { - "apiKey": [] + "title": "UpdateProjectRequest", + "type": "object" + }, + "libops.v1.UpdateProjectResponse": { + "additionalProperties": false, + "properties": { + "project": { + "$ref": "#/components/schemas/libops.v1.common.ProjectConfig", + "title": "project" } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" - } - }, - "/libops.v1.ProjectService/GetProjectRuntime": { - "get": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "Get a runtime host for a project. [Requires: read:project]", - "description": "Get a runtime host for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.GetProjectRuntime.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "UpdateProjectResponse", + "type": "object" + }, + "libops.v1.UpdateProjectSecretRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "secretId": { + "title": "secret_id", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeRequest" - } - } - } + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "value": { + "nullable": true, + "title": "value", + "type": "string" + } + }, + "title": "UpdateProjectSecretRequest", + "type": "object" + }, + "libops.v1.UpdateProjectSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.ProjectSecret", + "title": "secret" + } + }, + "title": "UpdateProjectSecretResponse", + "type": "object" + }, + "libops.v1.UpdateProjectSettingRequest": { + "additionalProperties": false, + "properties": { + "projectId": { + "title": "project_id", + "type": "string" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "settingId": { + "title": "setting_id", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } + "value": { + "nullable": true, + "title": "value", + "type": "string" } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeResponse" - } - } - } + }, + "title": "UpdateProjectSettingRequest", + "type": "object" + }, + "libops.v1.UpdateProjectSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.ProjectSetting", + "title": "setting" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] + "title": "UpdateProjectSettingResponse", + "type": "object" + }, + "libops.v1.UpdateSiteMemberRequest": { + "additionalProperties": false, + "properties": { + "accountId": { + "title": "account_id", + "type": "string" }, - { - "apiKey": [] + "role": { + "description": "New role", + "title": "role", + "type": "string" + }, + "siteId": { + "title": "site_id", + "type": "string" + }, + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + }, + "title": "UpdateSiteMemberRequest", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "Get a runtime host for a project. [Requires: read:project]", - "description": "Get a runtime host for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.GetProjectRuntime", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "libops.v1.UpdateSiteMemberResponse": { + "additionalProperties": false, + "properties": { + "member": { + "$ref": "#/components/schemas/libops.v1.MemberDetail", + "title": "member" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeRequest" - } - } - }, - "required": true }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "title": "UpdateSiteMemberResponse", + "type": "object" + }, + "libops.v1.UpdateSiteRequest": { + "additionalProperties": false, + "properties": { + "site": { + "$ref": "#/components/schemas/libops.v1.common.SiteConfig", + "title": "site" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeResponse" - } - } - } + "siteId": { + "title": "site_id", + "type": "string" + }, + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] + "title": "UpdateSiteRequest", + "type": "object" + }, + "libops.v1.UpdateSiteResponse": { + "additionalProperties": false, + "properties": { + "site": { + "$ref": "#/components/schemas/libops.v1.common.SiteConfig", + "title": "site" + } + }, + "title": "UpdateSiteResponse", + "type": "object" + }, + "libops.v1.UpdateSiteSecretRequest": { + "additionalProperties": false, + "properties": { + "secretId": { + "title": "secret_id", + "type": "string" }, - { - "apiKey": [] + "siteId": { + "title": "site_id", + "type": "string" + }, + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" + }, + "value": { + "nullable": true, + "title": "value", + "type": "string" } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" - } - }, - "/libops.v1.ProjectService/ListProjectRuntimes": { - "get": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "List runtime hosts for a project. [Requires: read:project]", - "description": "List runtime hosts for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.ListProjectRuntimes.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + }, + "title": "UpdateSiteSecretRequest", + "type": "object" + }, + "libops.v1.UpdateSiteSecretResponse": { + "additionalProperties": false, + "properties": { + "secret": { + "$ref": "#/components/schemas/libops.v1.SiteSecret", + "title": "secret" + } + }, + "title": "UpdateSiteSecretResponse", + "type": "object" + }, + "libops.v1.UpdateSiteSettingRequest": { + "additionalProperties": false, + "properties": { + "settingId": { + "title": "setting_id", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "siteId": { + "title": "site_id", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesRequest" - } - } - } + "updateMask": { + "$ref": "#/components/schemas/google.protobuf.FieldMask", + "title": "update_mask" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "value": { + "nullable": true, + "title": "value", + "type": "string" + } + }, + "title": "UpdateSiteSettingRequest", + "type": "object" + }, + "libops.v1.UpdateSiteSettingResponse": { + "additionalProperties": false, + "properties": { + "setting": { + "$ref": "#/components/schemas/libops.v1.SiteSetting", + "title": "setting" + } + }, + "title": "UpdateSiteSettingResponse", + "type": "object" + }, + "libops.v1.UpdateTaskRequest": { + "additionalProperties": false, + "properties": { + "inputRequest": { + "$ref": "#/components/schemas/libops.v1.TaskInput", + "title": "input_request" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "inputResponse": { + "$ref": "#/components/schemas/libops.v1.TaskInput", + "title": "input_response" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "organizationId": { + "title": "organization_id", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "prompt": { + "title": "prompt", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesResponse" - } - } - } + "results": { + "items": { + "$ref": "#/components/schemas/libops.v1.TaskResult" + }, + "title": "results", + "type": "array" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.TaskStatus", + "title": "status" + }, + "taskId": { + "title": "task_id", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] - }, - { - "apiKey": [] + "title": "UpdateTaskRequest", + "type": "object" + }, + "libops.v1.UpdateTaskResponse": { + "additionalProperties": false, + "properties": { + "task": { + "$ref": "#/components/schemas/libops.v1.Task", + "title": "task" } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + }, + "title": "UpdateTaskResponse", + "type": "object" }, - "post": { - "tags": [ - "libops.v1.ProjectService" + "libops.v1.common.AuthMethod": { + "description": "AuthMethod represents how a user authenticates to libops", + "enum": [ + "AUTH_METHOD_UNSPECIFIED", + "AUTH_METHOD_GOOGLE", + "AUTH_METHOD_USERPASS", + "AUTH_METHOD_GCLOUD" ], - "summary": "List runtime hosts for a project. [Requires: read:project]", - "description": "List runtime hosts for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.ListProjectRuntimes", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "title": "AuthMethod", + "type": "string" + }, + "libops.v1.common.DnsRecordInstruction": { + "additionalProperties": false, + "properties": { + "data": { + "title": "data", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesRequest" - } - } + "name": { + "title": "name", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "purpose": { + "$ref": "#/components/schemas/libops.v1.common.DnsRecordPurpose", + "title": "purpose" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:project" - ] + "retain": { + "title": "retain", + "type": "boolean" }, - { - "apiKey": [] + "ttl": { + "title": "ttl", + "type": "integer" + }, + "type": { + "title": "type", + "type": "string" } + }, + "title": "DnsRecordInstruction", + "type": "object" + }, + "libops.v1.common.DnsRecordPurpose": { + "enum": [ + "DNS_RECORD_PURPOSE_UNSPECIFIED", + "DNS_RECORD_PURPOSE_OWNERSHIP_PROOF", + "DNS_RECORD_PURPOSE_CERTIFICATE_AUTHORIZATION", + "DNS_RECORD_PURPOSE_TRAFFIC", + "DNS_RECORD_PURPOSE_SSH" ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" - } - }, - "/libops.v1.ProjectService/ListProjectSites": { - "get": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "List sites for a project [Requires: read:project]", - "description": "List sites for a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.ListProjectSites.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "title": "DnsRecordPurpose", + "type": "string" + }, + "libops.v1.common.DomainConfig": { + "additionalProperties": false, + "properties": { + "activatedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "activated_at" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "createdAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "created_at" + }, + "deleteRequestedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "delete_requested_at" + }, + "dnsInstructions": { + "items": { + "$ref": "#/components/schemas/libops.v1.common.DnsRecordInstruction" + }, + "title": "dns_instructions", + "type": "array" + }, + "domainId": { + "format": "uuid", + "title": "domain_id", + "type": "string" + }, + "failureMessage": { + "title": "failure_message", + "type": "string" + }, + "failureReason": { + "title": "failure_reason", + "type": "string" + }, + "hostname": { + "title": "hostname", + "type": "string" + }, + "kind": { + "$ref": "#/components/schemas/libops.v1.common.DomainKind", + "title": "kind" + }, + "managedHostname": { + "title": "managed_hostname", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSitesRequest" - } - } - } + "provisioningState": { + "$ref": "#/components/schemas/libops.v1.common.DomainProvisioningState", + "title": "provisioning_state" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "retryable": { + "title": "retryable", + "type": "boolean" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "routeReady": { + "title": "route_ready", + "type": "boolean" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "routeReadyAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "route_ready_at" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "routeState": { + "$ref": "#/components/schemas/libops.v1.common.DomainRouteState", + "title": "route_state" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSitesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:project" - ] + "siteId": { + "format": "uuid", + "title": "site_id", + "type": "string" }, - { - "apiKey": [] + "sshHostname": { + "title": "ssh_hostname", + "type": "string" + }, + "updatedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "updated_at" + }, + "verifiedAt": { + "$ref": "#/components/schemas/google.protobuf.Timestamp", + "title": "verified_at" } + }, + "title": "DomainConfig", + "type": "object" + }, + "libops.v1.common.DomainKind": { + "enum": [ + "DOMAIN_KIND_UNSPECIFIED", + "DOMAIN_KIND_MANAGED", + "DOMAIN_KIND_VANITY" ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + "title": "DomainKind", + "type": "string" }, - "post": { - "tags": [ - "libops.v1.ProjectService" + "libops.v1.common.DomainProvisioningState": { + "enum": [ + "DOMAIN_PROVISIONING_STATE_UNSPECIFIED", + "DOMAIN_PROVISIONING_STATE_AWAITING_OWNERSHIP_PROOF", + "DOMAIN_PROVISIONING_STATE_PREPARING_DNS_AUTHORIZATION", + "DOMAIN_PROVISIONING_STATE_AWAITING_CERTIFICATE_DNS", + "DOMAIN_PROVISIONING_STATE_PROVISIONING_CERTIFICATE", + "DOMAIN_PROVISIONING_STATE_PROVISIONING_MAP_ENTRY", + "DOMAIN_PROVISIONING_STATE_READY_FOR_TRAFFIC", + "DOMAIN_PROVISIONING_STATE_ACTIVE", + "DOMAIN_PROVISIONING_STATE_DEGRADED", + "DOMAIN_PROVISIONING_STATE_FAILED", + "DOMAIN_PROVISIONING_STATE_DELETING", + "DOMAIN_PROVISIONING_STATE_DELETED", + "DOMAIN_PROVISIONING_STATE_EXPIRED" + ], + "title": "DomainProvisioningState", + "type": "string" + }, + "libops.v1.common.DomainRouteState": { + "enum": [ + "DOMAIN_ROUTE_STATE_UNSPECIFIED", + "DOMAIN_ROUTE_STATE_PENDING", + "DOMAIN_ROUTE_STATE_ENABLED", + "DOMAIN_ROUTE_STATE_BLOCKED", + "DOMAIN_ROUTE_STATE_DELETING", + "DOMAIN_ROUTE_STATE_DELETED" ], - "summary": "List sites for a project [Requires: read:project]", - "description": "List sites for a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", - "operationId": "libops.v1.ProjectService.ListProjectSites", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "title": "DomainRouteState", + "type": "string" + }, + "libops.v1.common.FolderConfig": { + "additionalProperties": false, + "description": "FolderConfig is the organization-facing folder/organization configuration\n Contains only safe, non-sensitive fields", + "properties": { + "location": { + "$ref": "#/components/schemas/libops.v1.common.Location", + "description": "Organization's preferred Google Cloud location and region Geographic location (ASIA, AU, CA, DE, EU, IN, IT, US)", + "title": "location" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "organizationId": { + "format": "uuid", + "title": "organization_id", + "type": "string" + }, + "organizationName": { + "title": "organization_name", + "type": "string" + }, + "region": { + "description": "Specific region (e.g., \"us-central1\", \"europe-west1\")", + "title": "region", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" } + }, + "title": "FolderConfig", + "type": "object" + }, + "libops.v1.common.Location": { + "description": "Location represents Google Cloud geographic locations", + "enum": [ + "LOCATION_UNSPECIFIED", + "LOCATION_ASIA", + "LOCATION_AU", + "LOCATION_CA", + "LOCATION_DE", + "LOCATION_EU", + "LOCATION_IN", + "LOCATION_IT", + "LOCATION_US" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSitesRequest" - } - } + "title": "Location", + "type": "string" + }, + "libops.v1.common.ProjectConfig": { + "additionalProperties": false, + "description": "ProjectConfig is the organization-facing project configuration\n Contains only safe, non-sensitive fields", + "properties": { + "createBranchSites": { + "description": "Auto-create sites for new branches", + "title": "create_branch_sites", + "type": "boolean" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "diskSizeGb": { + "description": "Disk size in GB", + "format": "int32", + "title": "disk_size_gb", + "type": "integer" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSitesResponse" - } - } - } + "diskType": { + "description": "Disk type (default: \"hyperdisk-balanced\")", + "title": "disk_type", + "type": "string" + }, + "machineType": { + "description": "GCP machine type (e.g., \"e2-standard-2\")", + "title": "machine_type", + "type": "string" + }, + "organizationId": { + "format": "uuid", + "title": "organization_id", + "type": "string" + }, + "os": { + "description": "OS image (default: \"cos-125-19216-104-74\")", + "title": "os", + "type": "string" + }, + "projectId": { + "format": "uuid", + "title": "project_id", + "type": "string" + }, + "projectName": { + "title": "project_name", + "type": "string" + }, + "promote": { + "$ref": "#/components/schemas/libops.v1.common.PromoteStrategy", + "description": "Promotion strategy How to promote code to production", + "title": "promote" + }, + "region": { + "description": "GCP deployment configuration GCP region (e.g., \"us-central1\")", + "title": "region", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "description": "Status", + "title": "status" + }, + "zone": { + "description": "GCP zone (e.g., \"us-central1-f\")", + "title": "zone", + "type": "string" } }, - "security": [ - { - "oauth2": [ - "read:project" - ] + "title": "ProjectConfig", + "type": "object" + }, + "libops.v1.common.ProjectRuntimeConfig": { + "additionalProperties": false, + "description": "ProjectRuntimeConfig describes one VM/runtime host inside a project.\n Sites are assigned to a runtime so multiple apps can share a VM.", + "properties": { + "diskSizeGb": { + "format": "int32", + "title": "disk_size_gb", + "type": "integer" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" - } - }, - "/libops.v1.ProjectService/ListProjects": { - "get": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "List projects for a organization [Requires: read:organization]", - "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", - "operationId": "libops.v1.ProjectService.ListProjects.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "diskType": { + "title": "disk_type", + "type": "string" + }, + "gcpExternalIp": { + "title": "gcp_external_ip", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } + "gcpInstanceName": { + "description": "Runtime host identity, populated by orchestration.", + "title": "gcp_instance_name", + "type": "string" }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectsRequest" - } - } - } + "gcpInternalIp": { + "title": "gcp_internal_ip", + "type": "string" }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + "machineType": { + "title": "machine_type", + "type": "string" }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "name": { + "title": "name", + "type": "string" }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + "os": { + "title": "os", + "type": "string" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "projectId": { + "format": "uuid", + "title": "project_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:organization" - ] + "region": { + "description": "GCP runtime placement and host configuration.", + "title": "region", + "type": "string" }, - { - "apiKey": [] + "role": { + "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeRole", + "title": "role" + }, + "runtimeId": { + "format": "uuid", + "title": "runtime_id", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "title": "status" + }, + "zone": { + "title": "zone", + "type": "string" } + }, + "title": "ProjectRuntimeConfig", + "type": "object" + }, + "libops.v1.common.ProjectRuntimeRole": { + "enum": [ + "PROJECT_RUNTIME_ROLE_UNSPECIFIED", + "PROJECT_RUNTIME_ROLE_PRODUCTION", + "PROJECT_RUNTIME_ROLE_EPHEMERAL", + "PROJECT_RUNTIME_ROLE_CUSTOM" ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" + "title": "ProjectRuntimeRole", + "type": "string" }, - "post": { - "tags": [ - "libops.v1.ProjectService" + "libops.v1.common.PromoteStrategy": { + "enum": [ + "PROMOTE_STRATEGY_UNSPECIFIED", + "PROMOTE_STRATEGY_GITHUB_TAG", + "PROMOTE_STRATEGY_GITHUB_RELEASE" ], - "summary": "List projects for a organization [Requires: read:organization]", - "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", - "operationId": "libops.v1.ProjectService.ListProjects", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "title": "PromoteStrategy", + "type": "string" + }, + "libops.v1.common.SiteConfig": { + "additionalProperties": false, + "description": "SiteConfig is the organization-facing site configuration\n Contains only safe, non-sensitive fields", + "properties": { + "applicationType": { + "description": "Type of application (default: \"generic\")", + "title": "application_type", + "type": "string" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectsRequest" - } - } + "composeFile": { + "description": "Docker compose file name (default: \"docker-compose.yml\")", + "title": "compose_file", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "composePath": { + "description": "Path to docker-compose directory (default: \"\")", + "title": "compose_path", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectsResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:organization" - ] + "githubRef": { + "description": "GitHub reference: heads/{branch_name}, tags/{tag_name}, or \"release\"", + "title": "github_ref", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" - } - }, - "/libops.v1.ProjectService/UpdateProject": { - "post": { - "tags": [ - "libops.v1.ProjectService" - ], - "summary": "Update project configuration (organization-editable fields only) [Requires: write:project]", - "description": "Update project configuration (organization-editable fields only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:project` |\n| Project | `write:project` |\n", - "operationId": "libops.v1.ProjectService.UpdateProject", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "githubRepository": { + "description": "GitHub repository configuration GitHub repository URL", + "title": "github_repository", + "type": "string" + }, + "initCmd": { + "description": "Commands to run on initial setup", + "items": { + "type": "string" + }, + "title": "init_cmd", + "type": "array" + }, + "isProduction": { + "description": "Whether this is the production instance", + "title": "is_production", + "type": "boolean" + }, + "organizationId": { + "format": "uuid", + "title": "organization_id", + "type": "string" + }, + "os": { + "description": "GCP deployment configuration OS image (default: \"cos-125-19216-104-74\")", + "title": "os", + "type": "string" + }, + "overlayVolumes": { + "description": "Overlay volume paths", + "items": { + "type": "string" + }, + "title": "overlay_volumes", + "type": "array" + }, + "port": { + "description": "Application configuration Port the application listens on (default: 80)", + "format": "int32", + "title": "port", + "type": "integer" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectRequest" - } - } + "projectId": { + "format": "uuid", + "title": "project_id", + "type": "string" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "projectRuntimeId": { + "description": "Runtime/VM placement. On create, set one of project_runtime_id,\n project_runtime_name, or project_runtime_role to choose a runtime. If unset,\n production sites use the production runtime and other sites use ephemeral.", + "format": "uuid", + "title": "project_runtime_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:project" - ] + "projectRuntimeName": { + "title": "project_runtime_name", + "type": "string" }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.ProjectSettingService/CreateProjectSetting": { - "post": { - "tags": [ - "libops.v1.ProjectSettingService" - ], - "summary": "Create a project setting [Requires: manage_settings]", - "description": "Create a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n", - "operationId": "libops.v1.ProjectSettingService.CreateProjectSetting", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } + "projectRuntimeRole": { + "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeRole", + "title": "project_runtime_role" }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectSettingRequest" - } - } + "rolloutCmd": { + "description": "Commands to run during rollout", + "items": { + "type": "string" + }, + "title": "rollout_cmd", + "type": "array" }, - "required": true - }, - "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } + "siteId": { + "description": "Unique site identifier (UUID)", + "format": "uuid", + "title": "site_id", + "type": "string" }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateProjectSettingResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "manage_settings" - ] + "siteName": { + "description": "\"production\", \"staging\", \"development\"", + "title": "site_name", + "type": "string" }, - { - "apiKey": [] + "status": { + "$ref": "#/components/schemas/libops.v1.common.Status", + "description": "Status (organization-visible)", + "title": "status" + }, + "upCmd": { + "description": "Docker compose commands Commands to start containers", + "items": { + "type": "string" + }, + "title": "up_cmd", + "type": "array" } + }, + "title": "SiteConfig", + "type": "object" + }, + "libops.v1.common.Status": { + "description": "Status represents the lifecycle state of libops entities\n Used across organization, project, site, member, and firewall resources", + "enum": [ + "STATUS_UNSPECIFIED", + "STATUS_ACTIVE", + "STATUS_PROVISIONING", + "STATUS_FAILED", + "STATUS_SUSPENDED", + "STATUS_DELETED" ], - "x-scopes": [ - "manage_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" + "title": "Status", + "type": "string" } }, - "/libops.v1.ProjectSettingService/DeleteProjectSetting": { + "securitySchemes": { + "apiKey": { + "bearerFormat": "API Key", + "description": "API key authentication (prefix: libops_)", + "scheme": "bearer", + "type": "http" + }, + "oauth2": { + "description": "OAuth 2.0 authentication via Vault OIDC", + "flows": { + "authorizationCode": { + "authorizationUrl": "/auth/oauth/authorize", + "scopes": { + "delete:firewall": "Delete firewall rules", + "delete:members": "Remove organization/project/site members", + "delete:organization": "Delete organization", + "delete:project": "Delete project", + "delete:site": "Delete site", + "manage_secrets": "Read, write, and delete secrets", + "read:firewall": "Read firewall rules", + "read:members": "Read organization/project/site members", + "read:organization": "Read organization details", + "read:project": "Read project details", + "read:site": "Read site details", + "read:user": "Read user account information", + "write:firewall": "Update firewall rules", + "write:members": "Manage organization/project/site members", + "write:organization": "Update organization", + "write:project": "Update project", + "write:site": "Update site configuration", + "write:user": "Update user account information" + }, + "tokenUrl": "/auth/oauth/token" + } + }, + "type": "oauth2" + } + } + }, + "info": { + "contact": { + "name": "LibOps", + "url": "https://github.com/libops/api" + }, + "description": "LibOps control plane API to run docker compose projects on Google Cloud", + "license": { + "name": "MIT", + "url": "https://github.com/libops/api/blob/main/LICENSE" + }, + "title": "LibOps API", + "version": "1.0.0" + }, + "openapi": "3.1.2", + "paths": { + "/libops.v1.AccountService/CreateApiKey": { "post": { - "tags": [ - "libops.v1.ProjectSettingService" - ], - "summary": "Delete a project setting [Requires: manage_settings]", - "description": "Delete a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n", - "operationId": "libops.v1.ProjectSettingService.DeleteProjectSetting", + "description": "Create an API key for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", + "operationId": "libops.v1.AccountService.CreateApiKey", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -10825,173 +4504,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteProjectSettingRequest" + "$ref": "#/components/schemas/libops.v1.CreateApiKeyRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.CreateApiKeyResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_settings" + "write:user" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_settings" + "summary": "Create an API key for the authenticated user [Requires: write:user]", + "tags": [ + "libops.v1.AccountService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" + "x-min-access-level": "account:write", + "x-scopes": [ + "write:user" + ] } }, - "/libops.v1.ProjectSettingService/GetProjectSetting": { - "get": { - "tags": [ - "libops.v1.ProjectSettingService" - ], - "summary": "Get a project setting [Requires: read_settings]", - "description": "Get a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", - "operationId": "libops.v1.ProjectSettingService.GetProjectSetting.get", + "/libops.v1.AccountService/GetAccountByEmail": { + "get": { + "description": "Get account information by email (for Terraform provider lookups)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", + "operationId": "libops.v1.AccountService.GetAccountByEmail.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSettingRequest" + "$ref": "#/components/schemas/libops.v1.GetAccountByEmailRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetAccountByEmailResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSettingResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read_settings" + "read:user" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read_settings" + "summary": "Get account information by email (for Terraform provider lookups) [Requires: read:user]", + "tags": [ + "libops.v1.AccountService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + "x-min-access-level": "account:read", + "x-scopes": [ + "read:user" + ] }, "post": { - "tags": [ - "libops.v1.ProjectSettingService" - ], - "summary": "Get a project setting [Requires: read_settings]", - "description": "Get a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", - "operationId": "libops.v1.ProjectSettingService.GetProjectSetting", + "description": "Get account information by email (for Terraform provider lookups)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", + "operationId": "libops.v1.AccountService.GetAccountByEmail", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11001,173 +4680,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSettingRequest" + "$ref": "#/components/schemas/libops.v1.GetAccountByEmailRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetAccountByEmailResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetProjectSettingResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read_settings" + "read:user" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read_settings" + "summary": "Get account information by email (for Terraform provider lookups) [Requires: read:user]", + "tags": [ + "libops.v1.AccountService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + "x-min-access-level": "account:read", + "x-scopes": [ + "read:user" + ] } }, - "/libops.v1.ProjectSettingService/ListProjectSettings": { + "/libops.v1.AccountService/ListApiKeys": { "get": { - "tags": [ - "libops.v1.ProjectSettingService" - ], - "summary": "List project settings [Requires: read_settings]", - "description": "List project settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", - "operationId": "libops.v1.ProjectSettingService.ListProjectSettings.get", + "description": "List API keys for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", + "operationId": "libops.v1.AccountService.ListApiKeys.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSettingsRequest" + "$ref": "#/components/schemas/libops.v1.ListApiKeysRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListApiKeysResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSettingsResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read_settings" + "read:user" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read_settings" + "summary": "List API keys for the authenticated user [Requires: read:user]", + "tags": [ + "libops.v1.AccountService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + "x-min-access-level": "account:read", + "x-scopes": [ + "read:user" + ] }, "post": { - "tags": [ - "libops.v1.ProjectSettingService" - ], - "summary": "List project settings [Requires: read_settings]", - "description": "List project settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", - "operationId": "libops.v1.ProjectSettingService.ListProjectSettings", + "description": "List API keys for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", + "operationId": "libops.v1.AccountService.ListApiKeys", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11177,71 +4856,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSettingsRequest" + "$ref": "#/components/schemas/libops.v1.ListApiKeysRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListApiKeysResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListProjectSettingsResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read_settings" + "read:user" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read_settings" + "summary": "List API keys for the authenticated user [Requires: read:user]", + "tags": [ + "libops.v1.AccountService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:read" + "x-min-access-level": "account:read", + "x-scopes": [ + "read:user" + ] } }, - "/libops.v1.ProjectSettingService/UpdateProjectSetting": { + "/libops.v1.AccountService/RevokeApiKey": { "post": { - "tags": [ - "libops.v1.ProjectSettingService" - ], - "summary": "Update a project setting [Requires: manage_settings]", - "description": "Update a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n", - "operationId": "libops.v1.ProjectSettingService.UpdateProjectSetting", + "description": "Revoke an API key for the authenticated user\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", + "operationId": "libops.v1.AccountService.RevokeApiKey", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11251,71 +4930,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectSettingRequest" + "$ref": "#/components/schemas/libops.v1.RevokeApiKeyRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.RevokeApiKeyResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateProjectSettingResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_settings" + "write:user" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_settings" + "summary": "Revoke an API key for the authenticated user [Requires: write:user]", + "tags": [ + "libops.v1.AccountService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" + "x-min-access-level": "account:write", + "x-scopes": [ + "write:user" + ] } }, - "/libops.v1.SiteFirewallService/CreateSiteFirewallRule": { + "/libops.v1.AssistantService/Chat": { "post": { - "tags": [ - "libops.v1.SiteFirewallService" - ], - "summary": "Add firewall rule to a specific site [Requires: write:firewall]", - "description": "Add firewall rule to a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:firewall` |\n| Project | `write:firewall` |\n| Site | `write:firewall` |\n", - "operationId": "libops.v1.SiteFirewallService.CreateSiteFirewallRule", + "description": "Chat sends a user request to the assistant automation system.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", + "operationId": "libops.v1.AssistantService.Chat", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11325,71 +5004,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteFirewallRuleRequest" + "$ref": "#/components/schemas/libops.v1.AssistantChatRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.AssistantChatResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteFirewallRuleResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:firewall" + "write:organization" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:firewall" + "summary": "Chat sends a user request to the assistant automation system. [Requires: write:organization]", + "tags": [ + "libops.v1.AssistantService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:write", + "x-scopes": [ + "write:organization" + ] } }, - "/libops.v1.SiteFirewallService/DeleteSiteFirewallRule": { + "/libops.v1.DomainService/CheckSiteDomain": { "post": { - "tags": [ - "libops.v1.SiteFirewallService" - ], - "summary": "Remove a firewall rule from a specific site [Requires: delete:firewall]", - "description": "Remove a firewall rule from a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:firewall` |\n| Project | `delete:firewall` |\n| Site | `delete:firewall` |\n", - "operationId": "libops.v1.SiteFirewallService.DeleteSiteFirewallRule", + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |", + "operationId": "libops.v1.DomainService.CheckSiteDomain", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11399,173 +5078,145 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteSiteFirewallRuleRequest" + "$ref": "#/components/schemas/libops.v1.CheckSiteDomainRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.CheckSiteDomainResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "delete:firewall" + "write:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "delete:firewall" + "summary": "CheckSiteDomain", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "site:write", + "x-scopes": [ + "write:site" + ] } }, - "/libops.v1.SiteFirewallService/ListSiteFirewallRules": { - "get": { - "tags": [ - "libops.v1.SiteFirewallService" - ], - "summary": "List firewall rules applied to a specific site [Requires: read:firewall]", - "description": "List firewall rules applied to a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n| Site | `read:firewall` |\n", - "operationId": "libops.v1.SiteFirewallService.ListSiteFirewallRules.get", + "/libops.v1.DomainService/CreateSiteDomain": { + "post": { + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |", + "operationId": "libops.v1.DomainService.CreateSiteDomain", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesRequest" - } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteDomainRequest" } } }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], + "required": true + }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.CreateSiteDomainResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:firewall" + "write:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:firewall" + "summary": "CreateSiteDomain", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" - }, + "x-min-access-level": "site:write", + "x-scopes": [ + "write:site" + ] + } + }, + "/libops.v1.DomainService/DeleteSiteDomain": { "post": { - "tags": [ - "libops.v1.SiteFirewallService" - ], - "summary": "List firewall rules applied to a specific site [Requires: read:firewall]", - "description": "List firewall rules applied to a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n| Site | `read:firewall` |\n", - "operationId": "libops.v1.SiteFirewallService.ListSiteFirewallRules", + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |", + "operationId": "libops.v1.DomainService.DeleteSiteDomain", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11575,145 +5226,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesRequest" + "$ref": "#/components/schemas/libops.v1.DeleteSiteDomainRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/google.protobuf.Empty" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:firewall" + "write:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:firewall" + "summary": "DeleteSiteDomain", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" + "x-min-access-level": "site:write", + "x-scopes": [ + "write:site" + ] } }, - "/libops.v1.SiteMemberService/CreateSiteMember": { - "post": { - "tags": [ - "libops.v1.SiteMemberService" - ], - "summary": "Add a member to a site [Requires: write:members]", - "description": "Add a member to a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n| Site | `write:members` |\n", - "operationId": "libops.v1.SiteMemberService.CreateSiteMember", + "/libops.v1.DomainService/GetSiteDomain": { + "get": { + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |", + "operationId": "libops.v1.DomainService.GetSiteDomain.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteMemberRequest" + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteDomainRequest" + } } + }, + "in": "query", + "name": "message" + }, + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" } }, - "required": true - }, + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetSiteDomainResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteMemberResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:members" + "read:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:members" + "summary": "GetSiteDomain", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:admin" - } - }, - "/libops.v1.SiteMemberService/DeleteSiteMember": { + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] + }, "post": { - "tags": [ - "libops.v1.SiteMemberService" - ], - "summary": "Remove a member from a site [Requires: delete:members]", - "description": "Remove a member from a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:members` |\n| Project | `delete:members` |\n| Site | `delete:members` |\n", - "operationId": "libops.v1.SiteMemberService.DeleteSiteMember", + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |", + "operationId": "libops.v1.DomainService.GetSiteDomain", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11723,173 +5402,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteSiteMemberRequest" + "$ref": "#/components/schemas/libops.v1.GetSiteDomainRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetSiteDomainResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "delete:members" + "read:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "delete:members" + "summary": "GetSiteDomain", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:admin" + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] } }, - "/libops.v1.SiteMemberService/ListSiteMembers": { + "/libops.v1.DomainService/ListSiteDomains": { "get": { - "tags": [ - "libops.v1.SiteMemberService" - ], - "summary": "List members of a site [Requires: read:members]", - "description": "List members of a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n| Site | `read:members` |\n", - "operationId": "libops.v1.SiteMemberService.ListSiteMembers.get", + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |", + "operationId": "libops.v1.DomainService.ListSiteDomains.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteMembersRequest" + "$ref": "#/components/schemas/libops.v1.ListSiteDomainsRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListSiteDomainsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteMembersResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:members" + "read:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:members" + "summary": "ListSiteDomains", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] }, "post": { - "tags": [ - "libops.v1.SiteMemberService" - ], - "summary": "List members of a site [Requires: read:members]", - "description": "List members of a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n| Site | `read:members` |\n", - "operationId": "libops.v1.SiteMemberService.ListSiteMembers", + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |", + "operationId": "libops.v1.DomainService.ListSiteDomains", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11899,71 +5578,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteMembersRequest" + "$ref": "#/components/schemas/libops.v1.ListSiteDomainsRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListSiteDomainsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteMembersResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:members" + "read:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:members" + "summary": "ListSiteDomains", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] } }, - "/libops.v1.SiteMemberService/UpdateSiteMember": { + "/libops.v1.DomainService/RetrySiteDomainProvisioning": { "post": { - "tags": [ - "libops.v1.SiteMemberService" - ], - "summary": "Update a member's role [Requires: write:members]", - "description": "Update a member's role\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n| Site | `write:members` |\n", - "operationId": "libops.v1.SiteMemberService.UpdateSiteMember", + "description": "### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |", + "operationId": "libops.v1.DomainService.RetrySiteDomainProvisioning", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -11973,71 +5652,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteMemberRequest" + "$ref": "#/components/schemas/libops.v1.RetrySiteDomainProvisioningRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.RetrySiteDomainProvisioningResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteMemberResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:members" + "write:site" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:members" + "summary": "RetrySiteDomainProvisioning", + "tags": [ + "libops.v1.DomainService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:admin" + "x-min-access-level": "site:write", + "x-scopes": [ + "write:site" + ] } }, - "/libops.v1.SiteOperationsService/DeploySite": { + "/libops.v1.FirewallService/CreateOrganizationFirewallRule": { "post": { - "tags": [ - "libops.v1.SiteOperationsService" - ], - "summary": "Deploy a site [Requires: write:site]", - "description": "Deploy a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |\n", - "operationId": "libops.v1.SiteOperationsService.DeploySite", + "description": "Add firewall rule applied to all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:firewall` |\n", + "operationId": "libops.v1.FirewallService.CreateOrganizationFirewallRule", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -12047,173 +5726,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeploySiteRequest" + "$ref": "#/components/schemas/libops.v1.CreateOrganizationFirewallRuleRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.DeploySiteResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "write:site" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:site" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" - } - }, - "/libops.v1.SiteOperationsService/GetSiteStatus": { - "get": { - "tags": [ - "libops.v1.SiteOperationsService" - ], - "summary": "Get site deployment status [Requires: read:site]", - "description": "Get site deployment status\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", - "operationId": "libops.v1.SiteOperationsService.GetSiteStatus.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteStatusRequest" + "$ref": "#/components/schemas/libops.v1.CreateOrganizationFirewallRuleResponse" } } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + }, + "description": "Success" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { "default": { - "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/connect.error" } } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteStatusResponse" - } - } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:site" + "write:firewall" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:site" + "summary": "Add firewall rule applied to all sites for a organization [Requires: write:firewall]", + "tags": [ + "libops.v1.FirewallService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" - }, + "x-min-access-level": "organization:write", + "x-scopes": [ + "write:firewall" + ] + } + }, + "/libops.v1.FirewallService/DeleteOrganizationFirewallRule": { "post": { - "tags": [ - "libops.v1.SiteOperationsService" - ], - "summary": "Get site deployment status [Requires: read:site]", - "description": "Get site deployment status\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", - "operationId": "libops.v1.SiteOperationsService.GetSiteStatus", + "description": "Remove a firewall rule from all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:firewall` |\n", + "operationId": "libops.v1.FirewallService.DeleteOrganizationFirewallRule", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -12223,145 +5800,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteStatusRequest" + "$ref": "#/components/schemas/libops.v1.DeleteOrganizationFirewallRuleRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/google.protobuf.Empty" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteStatusResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:site" + "delete:firewall" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:site" + "summary": "Remove a firewall rule from all sites for a organization [Requires: delete:firewall]", + "tags": [ + "libops.v1.FirewallService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" + "x-min-access-level": "organization:write", + "x-scopes": [ + "delete:firewall" + ] } }, - "/libops.v1.SiteSecretService/CreateSiteSecret": { - "post": { - "tags": [ - "libops.v1.SiteSecretService" - ], - "summary": "Create a site secret [Requires: manage_secrets]", - "description": "Create a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", - "operationId": "libops.v1.SiteSecretService.CreateSiteSecret", + "/libops.v1.FirewallService/ListOrganizationFirewallRules": { + "get": { + "description": "List firewall rules applied to all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n", + "operationId": "libops.v1.FirewallService.ListOrganizationFirewallRules.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteSecretRequest" + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesRequest" + } } + }, + "in": "query", + "name": "message" + }, + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" } }, - "required": true - }, + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteSecretResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_secrets" + "read:firewall" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_secrets" + "summary": "List firewall rules applied to all sites for a organization [Requires: read:firewall]", + "tags": [ + "libops.v1.FirewallService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" - } - }, - "/libops.v1.SiteSecretService/DeleteSiteSecret": { + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:firewall" + ] + }, "post": { - "tags": [ - "libops.v1.SiteSecretService" - ], - "summary": "Delete a site secret [Requires: manage_secrets]", - "description": "Delete a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", - "operationId": "libops.v1.SiteSecretService.DeleteSiteSecret", + "description": "List firewall rules applied to all sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n", + "operationId": "libops.v1.FirewallService.ListOrganizationFirewallRules", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -12371,173 +5976,145 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteSiteSecretRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationFirewallRulesResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_secrets" + "read:firewall" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_secrets" + "summary": "List firewall rules applied to all sites for a organization [Requires: read:firewall]", + "tags": [ + "libops.v1.FirewallService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:firewall" + ] } }, - "/libops.v1.SiteSecretService/GetSiteSecret": { - "get": { - "tags": [ - "libops.v1.SiteSecretService" - ], - "summary": "Get a site secret [Requires: manage_secrets]", - "description": "Get a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", - "operationId": "libops.v1.SiteSecretService.GetSiteSecret.get", + "/libops.v1.MemberService/CreateOrganizationMember": { + "post": { + "description": "Create a member in a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n", + "operationId": "libops.v1.MemberService.CreateOrganizationMember", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretRequest" - } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateOrganizationMemberRequest" } } }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], + "required": true + }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.CreateOrganizationMemberResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_secrets" + "write:members" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_secrets" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" - }, - "post": { + "summary": "Create a member in a organization [Requires: write:members]", "tags": [ - "libops.v1.SiteSecretService" + "libops.v1.MemberService" ], - "summary": "Get a site secret [Requires: manage_secrets]", - "description": "Get a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", - "operationId": "libops.v1.SiteSecretService.GetSiteSecret", + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:admin", + "x-scopes": [ + "write:members" + ] + } + }, + "/libops.v1.MemberService/DeleteOrganizationMember": { + "post": { + "description": "Delete a member from a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:members` |\n", + "operationId": "libops.v1.MemberService.DeleteOrganizationMember", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -12547,173 +6124,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretRequest" + "$ref": "#/components/schemas/libops.v1.DeleteOrganizationMemberRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/google.protobuf.Empty" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSecretResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_secrets" + "delete:members" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_secrets" + "summary": "Delete a member from a organization [Requires: delete:members]", + "tags": [ + "libops.v1.MemberService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:admin", + "x-scopes": [ + "delete:members" + ] } }, - "/libops.v1.SiteSecretService/ListSiteSecrets": { + "/libops.v1.MemberService/ListOrganizationMembers": { "get": { - "tags": [ - "libops.v1.SiteSecretService" - ], - "summary": "List a site's secrets [Requires: manage_secrets]", - "description": "List a site's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", - "operationId": "libops.v1.SiteSecretService.ListSiteSecrets.get", + "description": "List members of a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n", + "operationId": "libops.v1.MemberService.ListOrganizationMembers.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSecretsRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSecretsResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_secrets" + "read:members" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_secrets" + "summary": "List members of a organization [Requires: read:members]", + "tags": [ + "libops.v1.MemberService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:members" + ] }, "post": { - "tags": [ - "libops.v1.SiteSecretService" - ], - "summary": "List a site's secrets [Requires: manage_secrets]", - "description": "List a site's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", - "operationId": "libops.v1.SiteSecretService.ListSiteSecrets", + "description": "List members of a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n", + "operationId": "libops.v1.MemberService.ListOrganizationMembers", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -12723,71 +6300,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSecretsRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationMembersResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSecretsResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_secrets" + "read:members" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_secrets" + "summary": "List members of a organization [Requires: read:members]", + "tags": [ + "libops.v1.MemberService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:members" + ] } }, - "/libops.v1.SiteSecretService/UpdateSiteSecret": { + "/libops.v1.MemberService/UpdateOrganizationMember": { "post": { - "tags": [ - "libops.v1.SiteSecretService" - ], - "summary": "Update a site secret [Requires: manage_secrets]", - "description": "Update a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", - "operationId": "libops.v1.SiteSecretService.UpdateSiteSecret", + "description": "Update a member's role\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n", + "operationId": "libops.v1.MemberService.UpdateOrganizationMember", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -12797,145 +6374,158 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteSecretRequest" + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationMemberRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationMemberResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteSecretResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_secrets" + "write:members" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_secrets" + "summary": "Update a member's role [Requires: write:members]", + "tags": [ + "libops.v1.MemberService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:admin", + "x-scopes": [ + "write:members" + ] } }, - "/libops.v1.SiteService/CreateSite": { - "post": { - "tags": [ - "libops.v1.SiteService" - ], - "summary": "Create a new site [Requires: write:project]", - "description": "Create a new site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:project` |\n| Project | `write:project` |\n", - "operationId": "libops.v1.SiteService.CreateSite", + "/libops.v1.OperationService/GetOperation": { + "get": { + "description": "Get an operation by public operation ID or request ID.", + "operationId": "libops.v1.OperationService.GetOperation.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteRequest" + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetOperationRequest" + } } + }, + "in": "query", + "name": "message" + }, + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" } }, - "required": true - }, + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetOperationResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, - "security": [ - { - "oauth2": [ - "write:project" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:project" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "project:write" - } - }, - "/libops.v1.SiteService/DeleteSite": { + "summary": "Get an operation by public operation ID or request ID.", + "tags": [ + "libops.v1.OperationService" + ] + }, "post": { - "tags": [ - "libops.v1.SiteService" - ], - "summary": "Delete a site [Requires: delete:site]", - "description": "Delete a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:site` |\n| Project | `delete:site` |\n| Site | `delete:site` |\n", - "operationId": "libops.v1.SiteService.DeleteSite", + "description": "Get an operation by public operation ID or request ID.", + "operationId": "libops.v1.OperationService.GetOperation", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -12945,173 +6535,130 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteSiteRequest" + "$ref": "#/components/schemas/libops.v1.GetOperationRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetOperationResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, - "security": [ - { - "oauth2": [ - "delete:site" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "delete:site" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:admin" + "summary": "Get an operation by public operation ID or request ID.", + "tags": [ + "libops.v1.OperationService" + ] } }, - "/libops.v1.SiteService/GetSite": { - "get": { - "tags": [ - "libops.v1.SiteService" - ], - "summary": "Get site configuration (organization view) [Requires: read:site]", - "description": "Get site configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", - "operationId": "libops.v1.SiteService.GetSite.get", + "/libops.v1.OrganizationSecretService/CreateOrganizationSecret": { + "post": { + "description": "Create an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", + "operationId": "libops.v1.OrganizationSecretService.CreateOrganizationSecret", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - }, - { - "name": "message", - "in": "query", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteRequest" - } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateOrganizationSecretRequest" } } }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } - }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], + "required": true + }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.CreateOrganizationSecretResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:site" + "manage_secrets" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:site" + "summary": "Create an organization secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.OrganizationSecretService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" - }, + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.OrganizationSecretService/DeleteOrganizationSecret": { "post": { - "tags": [ - "libops.v1.SiteService" - ], - "summary": "Get site configuration (organization view) [Requires: read:site]", - "description": "Get site configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", - "operationId": "libops.v1.SiteService.GetSite", + "description": "Delete an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", + "operationId": "libops.v1.OrganizationSecretService.DeleteOrganizationSecret", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -13121,247 +6668,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteRequest" + "$ref": "#/components/schemas/libops.v1.DeleteOrganizationSecretRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/google.protobuf.Empty" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:site" + "manage_secrets" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:site" + "summary": "Delete an organization secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.OrganizationSecretService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_secrets" + ] } }, - "/libops.v1.SiteService/ListSites": { + "/libops.v1.OrganizationSecretService/GetOrganizationSecret": { "get": { - "tags": [ - "libops.v1.SiteService" - ], - "summary": "List sites for a organization [Requires: read:site]", - "description": "List sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:site` |\n", - "operationId": "libops.v1.SiteService.ListSites.get", + "description": "Get an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", + "operationId": "libops.v1.OrganizationSecretService.GetOrganizationSecret.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSitesRequest" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListSitesResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:site" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:site" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" - }, - "post": { - "tags": [ - "libops.v1.SiteService" - ], - "summary": "List sites for a organization [Requires: read:site]", - "description": "List sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:site` |\n", - "operationId": "libops.v1.SiteService.ListSites", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListSitesRequest" - } - } - }, - "required": true - }, - "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSitesResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:site" + "manage_secrets" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:site" + "summary": "Get an organization secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.OrganizationSecretService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" - } - }, - "/libops.v1.SiteService/UpdateSite": { + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_secrets" + ] + }, "post": { - "tags": [ - "libops.v1.SiteService" - ], - "summary": "Update site configuration (organization-editable fields only) [Requires: write:site]", - "description": "Update site configuration (organization-editable fields only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |\n", - "operationId": "libops.v1.SiteService.UpdateSite", + "description": "Get an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", + "operationId": "libops.v1.OrganizationSecretService.GetOrganizationSecret", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -13371,145 +6844,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteRequest" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSecretResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:site" + "manage_secrets" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:site" + "summary": "Get an organization secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.OrganizationSecretService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_secrets" + ] } }, - "/libops.v1.SiteSettingService/CreateSiteSetting": { - "post": { - "tags": [ - "libops.v1.SiteSettingService" - ], - "summary": "Create a site setting [Requires: manage_settings]", - "description": "Create a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n| Site | `manage_settings` |\n", - "operationId": "libops.v1.SiteSettingService.CreateSiteSetting", + "/libops.v1.OrganizationSecretService/ListOrganizationSecrets": { + "get": { + "description": "List organization secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", + "operationId": "libops.v1.OrganizationSecretService.ListOrganizationSecrets.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteSettingRequest" + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsRequest" + } } + }, + "in": "query", + "name": "message" + }, + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" } }, - "required": true - }, + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSiteSettingResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_settings" + "manage_secrets" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_settings" + "summary": "List organization secrets [Requires: manage_secrets]", + "tags": [ + "libops.v1.OrganizationSecretService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" - } - }, - "/libops.v1.SiteSettingService/DeleteSiteSetting": { + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_secrets" + ] + }, "post": { - "tags": [ - "libops.v1.SiteSettingService" - ], - "summary": "Delete a site setting [Requires: manage_settings]", - "description": "Delete a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n| Site | `manage_settings` |\n", - "operationId": "libops.v1.SiteSettingService.DeleteSiteSetting", + "description": "List organization secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", + "operationId": "libops.v1.OrganizationSecretService.ListOrganizationSecrets", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -13519,173 +7020,219 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteSiteSettingRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationSecretsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_settings" + "manage_secrets" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_settings" + "summary": "List organization secrets [Requires: manage_secrets]", + "tags": [ + "libops.v1.OrganizationSecretService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_secrets" + ] } }, - "/libops.v1.SiteSettingService/GetSiteSetting": { - "get": { - "tags": [ - "libops.v1.SiteSettingService" - ], - "summary": "Get a site setting [Requires: read_settings]", - "description": "Get a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", - "operationId": "libops.v1.SiteSettingService.GetSiteSetting.get", + "/libops.v1.OrganizationSecretService/UpdateOrganizationSecret": { + "post": { + "description": "Update an organization secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n", + "operationId": "libops.v1.OrganizationSecretService.UpdateOrganizationSecret", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSecretRequest" + } + } }, - { - "name": "message", - "in": "query", + "required": true + }, + "responses": { + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSettingRequest" + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSecretResponse" } } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } + }, + "description": "Success" }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" + } + }, + "security": [ { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } + "oauth2": [ + "manage_secrets" + ] }, { - "name": "compression", - "in": "query", + "apiKey": [] + } + ], + "summary": "Update an organization secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.OrganizationSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.OrganizationService/CreateOrganization": { + "post": { + "description": "Create a new organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:organization` |\n", + "operationId": "libops.v1.OrganizationService.CreateOrganization", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, "schema": { - "$ref": "#/components/schemas/compression" + "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "connect", - "in": "query", + "in": "header", + "name": "Connect-Timeout-Ms", "schema": { - "$ref": "#/components/schemas/connect" + "$ref": "#/components/schemas/connect-timeout-header" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateOrganizationRequest" + } + } + }, + "required": true + }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.CreateOrganizationResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSettingResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read_settings" + "write:organization" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read_settings" + "summary": "Create a new organization [Requires: write:organization]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" - }, + "x-min-access-level": "account:write", + "x-scopes": [ + "write:organization" + ] + } + }, + "/libops.v1.OrganizationService/DeleteOrganization": { "post": { - "tags": [ - "libops.v1.SiteSettingService" - ], - "summary": "Get a site setting [Requires: read_settings]", - "description": "Get a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", - "operationId": "libops.v1.SiteSettingService.GetSiteSetting", + "description": "Delete a organization (must have no projects)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:organization` |\n", + "operationId": "libops.v1.OrganizationService.DeleteOrganization", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -13695,173 +7242,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSettingRequest" + "$ref": "#/components/schemas/libops.v1.DeleteOrganizationRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/google.protobuf.Empty" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetSiteSettingResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read_settings" + "delete:organization" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read_settings" + "summary": "Delete a organization (must have no projects) [Requires: delete:organization]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" + "x-min-access-level": "organization:admin", + "x-scopes": [ + "delete:organization" + ] } }, - "/libops.v1.SiteSettingService/ListSiteSettings": { + "/libops.v1.OrganizationService/GetOrganization": { "get": { - "tags": [ - "libops.v1.SiteSettingService" - ], - "summary": "List site settings [Requires: read_settings]", - "description": "List site settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", - "operationId": "libops.v1.SiteSettingService.ListSiteSettings.get", + "description": "Get organization configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", + "operationId": "libops.v1.OrganizationService.GetOrganization.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSettingsRequest" + "$ref": "#/components/schemas/libops.v1.GetOrganizationRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetOrganizationResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSettingsResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read_settings" + "read:organization" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read_settings" + "summary": "Get organization configuration (organization view) [Requires: read:organization]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:organization" + ] }, "post": { - "tags": [ - "libops.v1.SiteSettingService" - ], - "summary": "List site settings [Requires: read_settings]", - "description": "List site settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", - "operationId": "libops.v1.SiteSettingService.ListSiteSettings", + "description": "Get organization configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", + "operationId": "libops.v1.OrganizationService.GetOrganization", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -13871,219 +7418,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSettingsRequest" + "$ref": "#/components/schemas/libops.v1.GetOrganizationRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, "200": { - "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSiteSettingsResponse" + "$ref": "#/components/schemas/libops.v1.GetOrganizationResponse" } } - } - } - }, - "security": [ - { - "oauth2": [ - "read_settings" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read_settings" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:read" - } - }, - "/libops.v1.SiteSettingService/UpdateSiteSetting": { - "post": { - "tags": [ - "libops.v1.SiteSettingService" - ], - "summary": "Update a site setting [Requires: manage_settings]", - "description": "Update a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n| Site | `manage_settings` |\n", - "operationId": "libops.v1.SiteSettingService.UpdateSiteSetting", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteSettingRequest" - } - } + }, + "description": "Success" }, - "required": true - }, - "responses": { "default": { - "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/connect.error" } } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateSiteSettingResponse" - } - } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "manage_settings" + "read:organization" ] }, { "apiKey": [] } ], - "x-scopes": [ - "manage_settings" + "summary": "Get organization configuration (organization view) [Requires: read:organization]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "site:write" + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:organization" + ] } }, - "/libops.v1.SshKeyService/CreateSshKey": { - "post": { - "tags": [ - "libops.v1.SshKeyService" - ], - "summary": "Create SSH key for an account [Requires: write:user]", - "description": "Create SSH key for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", - "operationId": "libops.v1.SshKeyService.CreateSshKey", + "/libops.v1.OrganizationService/ListOrganizationProjects": { + "get": { + "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n", + "operationId": "libops.v1.OrganizationService.ListOrganizationProjects.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSshKeyRequest" + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsRequest" + } } + }, + "in": "query", + "name": "message" + }, + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" } }, - "required": true - }, + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateSshKeyResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:user" + "read:project" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:user" + "summary": "List projects for a organization [Requires: read:project]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:write" - } - }, - "/libops.v1.SshKeyService/DeleteSshKey": { + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:project" + ] + }, "post": { - "tags": [ - "libops.v1.SshKeyService" - ], - "summary": "Delete SSH key [Requires: write:user]", - "description": "Delete SSH key\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", - "operationId": "libops.v1.SshKeyService.DeleteSshKey", + "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n", + "operationId": "libops.v1.OrganizationService.ListOrganizationProjects", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -14093,173 +7594,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.DeleteSshKeyRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationProjectsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/google.protobuf.Empty" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:user" + "read:project" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:user" + "summary": "List projects for a organization [Requires: read:project]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:write" + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:project" + ] } }, - "/libops.v1.SshKeyService/ListSshKeys": { + "/libops.v1.OrganizationService/ListOrganizations": { "get": { - "tags": [ - "libops.v1.SshKeyService" - ], - "summary": "List SSH keys for an account [Requires: read:user]", - "description": "List SSH keys for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", - "operationId": "libops.v1.SshKeyService.ListSshKeys.get", + "description": "List all organizations\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", + "operationId": "libops.v1.OrganizationService.ListOrganizations.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSshKeysRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationsRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSshKeysResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:user" + "read:organization" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:user" + "summary": "List all organizations [Requires: read:organization]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" + "x-min-access-level": "account:read", + "x-scopes": [ + "read:organization" + ] }, "post": { - "tags": [ - "libops.v1.SshKeyService" - ], - "summary": "List SSH keys for an account [Requires: read:user]", - "description": "List SSH keys for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", - "operationId": "libops.v1.SshKeyService.ListSshKeys", + "description": "List all organizations\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", + "operationId": "libops.v1.OrganizationService.ListOrganizations", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -14269,71 +7770,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSshKeysRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationsRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListSshKeysResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:user" + "read:organization" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:user" + "summary": "List all organizations [Requires: read:organization]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "account:read" + "x-min-access-level": "account:read", + "x-scopes": [ + "read:organization" + ] } }, - "/libops.v1.TaskService/AppendTaskLog": { + "/libops.v1.OrganizationService/UpdateOrganization": { "post": { - "tags": [ - "libops.v1.TaskService" - ], - "summary": "Append a structured log entry to a task. [Requires: write:organization]", - "description": "Append a structured log entry to a task.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", - "operationId": "libops.v1.TaskService.AppendTaskLog", + "description": "Update organization metadata (organization-editable fields only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", + "operationId": "libops.v1.OrganizationService.UpdateOrganization", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -14343,32 +7844,32 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.AppendTaskLogRequest" + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.AppendTaskLogResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ @@ -14381,33 +7882,33 @@ "apiKey": [] } ], - "x-scopes": [ - "write:organization" + "summary": "Update organization metadata (organization-editable fields only) [Requires: write:organization]", + "tags": [ + "libops.v1.OrganizationService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" + "x-min-access-level": "organization:write", + "x-scopes": [ + "write:organization" + ] } }, - "/libops.v1.TaskService/CancelTask": { + "/libops.v1.OrganizationSettingService/CreateOrganizationSetting": { "post": { - "tags": [ - "libops.v1.TaskService" - ], - "summary": "Cancel a queued, running, or input-blocked task. [Requires: write:organization]", - "description": "Cancel a queued, running, or input-blocked task.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", - "operationId": "libops.v1.TaskService.CancelTask", + "description": "Create an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n", + "operationId": "libops.v1.OrganizationSettingService.CreateOrganizationSetting", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -14417,71 +7918,71 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CancelTaskRequest" + "$ref": "#/components/schemas/libops.v1.CreateOrganizationSettingRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.CreateOrganizationSettingResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CancelTaskResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:organization" + "manage_settings" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:organization" + "summary": "Create an organization setting [Requires: manage_settings]", + "tags": [ + "libops.v1.OrganizationSettingService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_settings" + ] } }, - "/libops.v1.TaskService/CreateTask": { + "/libops.v1.OrganizationSettingService/DeleteOrganizationSetting": { "post": { - "tags": [ - "libops.v1.TaskService" - ], - "summary": "Create a new task from a natural language prompt. [Requires: write:organization]", - "description": "Create a new task from a natural language prompt.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", - "operationId": "libops.v1.TaskService.CreateTask", + "description": "Delete an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n", + "operationId": "libops.v1.OrganizationSettingService.DeleteOrganizationSetting", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -14491,173 +7992,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateTaskRequest" + "$ref": "#/components/schemas/libops.v1.DeleteOrganizationSettingRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/google.protobuf.Empty" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.CreateTaskResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "write:organization" + "manage_settings" ] }, { "apiKey": [] } ], - "x-scopes": [ - "write:organization" + "summary": "Delete an organization setting [Requires: manage_settings]", + "tags": [ + "libops.v1.OrganizationSettingService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_settings" + ] } }, - "/libops.v1.TaskService/GetTask": { + "/libops.v1.OrganizationSettingService/GetOrganizationSetting": { "get": { - "tags": [ - "libops.v1.TaskService" - ], - "summary": "Get a task by ID. [Requires: read:organization]", - "description": "Get a task by ID.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", - "operationId": "libops.v1.TaskService.GetTask.get", + "description": "Get an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", + "operationId": "libops.v1.OrganizationSettingService.GetOrganizationSetting.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } }, { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetTaskRequest" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingRequest" } } - } + }, + "in": "query", + "name": "message" }, { - "name": "encoding", "in": "query", + "name": "encoding", "required": true, "schema": { "$ref": "#/components/schemas/encoding" } }, { - "name": "base64", "in": "query", + "name": "base64", "schema": { "$ref": "#/components/schemas/base64" } }, { - "name": "compression", "in": "query", + "name": "compression", "schema": { "$ref": "#/components/schemas/compression" } }, { - "name": "connect", "in": "query", + "name": "connect", "schema": { "$ref": "#/components/schemas/connect" } } ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetTaskResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:organization" + "read_settings" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:organization" + "summary": "Get an organization setting [Requires: read_settings]", + "tags": [ + "libops.v1.OrganizationSettingService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" + "x-min-access-level": "organization:read", + "x-scopes": [ + "read_settings" + ] }, "post": { - "tags": [ - "libops.v1.TaskService" - ], - "summary": "Get a task by ID. [Requires: read:organization]", - "description": "Get a task by ID.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", - "operationId": "libops.v1.TaskService.GetTask", + "description": "Get an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", + "operationId": "libops.v1.OrganizationSettingService.GetOrganizationSetting", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -14667,247 +8168,173 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.GetTaskRequest" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.GetTaskResponse" - } - } - } - } - }, - "security": [ - { - "oauth2": [ - "read:organization" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.TaskService/ListTasks": { - "get": { - "tags": [ - "libops.v1.TaskService" - ], - "summary": "List tasks scoped by organization/project/site. [Requires: read:organization]", - "description": "List tasks scoped by organization/project/site.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", - "operationId": "libops.v1.TaskService.ListTasks.get", - "parameters": [ - { - "name": "Connect-Protocol-Version", - "in": "header", - "required": true, - "schema": { - "$ref": "#/components/schemas/connect-protocol-version" - } - }, - { - "name": "Connect-Timeout-Ms", - "in": "header", - "schema": { - "$ref": "#/components/schemas/connect-timeout-header" - } - }, - { - "name": "message", - "in": "query", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListTasksRequest" + "$ref": "#/components/schemas/libops.v1.GetOrganizationSettingResponse" } } - } - }, - { - "name": "encoding", - "in": "query", - "required": true, - "schema": { - "$ref": "#/components/schemas/encoding" - } - }, - { - "name": "base64", - "in": "query", - "schema": { - "$ref": "#/components/schemas/base64" - } - }, - { - "name": "compression", - "in": "query", - "schema": { - "$ref": "#/components/schemas/compression" - } + }, + "description": "Success" }, - { - "name": "connect", - "in": "query", - "schema": { - "$ref": "#/components/schemas/connect" - } - } - ], - "responses": { "default": { - "description": "Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/connect.error" } } - } - }, - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListTasksResponse" - } - } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:organization" + "read_settings" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - }, - "post": { + "summary": "Get an organization setting [Requires: read_settings]", "tags": [ - "libops.v1.TaskService" + "libops.v1.OrganizationSettingService" ], - "summary": "List tasks scoped by organization/project/site. [Requires: read:organization]", - "description": "List tasks scoped by organization/project/site.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", - "operationId": "libops.v1.TaskService.ListTasks", + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:read", + "x-scopes": [ + "read_settings" + ] + } + }, + "/libops.v1.OrganizationSettingService/ListOrganizationSettings": { + "get": { + "description": "List organization settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", + "operationId": "libops.v1.OrganizationSettingService.ListOrganizationSettings.get", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/libops.v1.ListTasksRequest" + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsRequest" + } } + }, + "in": "query", + "name": "message" + }, + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" } }, - "required": true - }, + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], "responses": { - "default": { - "description": "Error", + "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/connect.error" + "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsResponse" } } - } + }, + "description": "Success" }, - "200": { - "description": "Success", + "default": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.ListTasksResponse" + "$ref": "#/components/schemas/connect.error" } } - } + }, + "description": "Error" } }, "security": [ { "oauth2": [ - "read:organization" + "read_settings" ] }, { "apiKey": [] } ], - "x-scopes": [ - "read:organization" + "summary": "List organization settings [Requires: read_settings]", + "tags": [ + "libops.v1.OrganizationSettingService" ], "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:read" - } - }, - "/libops.v1.TaskService/UpdateTask": { + "x-min-access-level": "organization:read", + "x-scopes": [ + "read_settings" + ] + }, "post": { - "tags": [ - "libops.v1.TaskService" - ], - "summary": "Update a task (status, prompt, input, results). [Requires: write:organization]", - "description": "Update a task (status, prompt, input, results).\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", - "operationId": "libops.v1.TaskService.UpdateTask", + "description": "List organization settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n", + "operationId": "libops.v1.OrganizationSettingService.ListOrganizationSettings", "parameters": [ { - "name": "Connect-Protocol-Version", "in": "header", + "name": "Connect-Protocol-Version", "required": true, "schema": { "$ref": "#/components/schemas/connect-protocol-version" } }, { - "name": "Connect-Timeout-Ms", "in": "header", + "name": "Connect-Timeout-Ms", "schema": { "$ref": "#/components/schemas/connect-timeout-header" } @@ -14917,6221 +8344,6765 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateTaskRequest" + "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsRequest" } } }, "required": true }, "responses": { - "default": { - "description": "Error", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/connect.error" - } - } - } - }, "200": { - "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/libops.v1.UpdateTaskResponse" + "$ref": "#/components/schemas/libops.v1.ListOrganizationSettingsResponse" } } - } - } - }, - "security": [ - { - "oauth2": [ - "write:organization" - ] - }, - { - "apiKey": [] - } - ], - "x-scopes": [ - "write:organization" - ], - "x-auth-type": "oauth2 or apiKey", - "x-min-access-level": "organization:write" - } - } - }, - "components": { - "schemas": { - "base64": { - "type": "boolean", - "title": "base64", - "description": "Specifies if the message query param is base64 encoded, which may be required for binary data" - }, - "compression": { - "title": "compression", - "enum": [ - "identity", - "gzip", - "br" - ], - "description": "Which compression algorithm to use for this request" - }, - "connect": { - "title": "connect", - "enum": [ - "v1" - ], - "description": "Define the version of the Connect protocol" - }, - "connect-protocol-version": { - "type": "number", - "title": "Connect-Protocol-Version", - "enum": [ - 1 - ], - "description": "Define the version of the Connect protocol", - "const": 1 - }, - "connect-timeout-header": { - "type": "number", - "title": "Connect-Timeout-Ms", - "description": "Define the timeout, in ms" - }, - "connect.error": { - "type": "object", - "properties": { - "code": { - "type": "string", - "examples": [ - "not_found" - ], - "enum": [ - "canceled", - "unknown", - "invalid_argument", - "deadline_exceeded", - "not_found", - "already_exists", - "permission_denied", - "resource_exhausted", - "failed_precondition", - "aborted", - "out_of_range", - "unimplemented", - "internal", - "unavailable", - "data_loss", - "unauthenticated" - ], - "description": "The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code]." - }, - "message": { - "type": "string", - "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client." - }, - "details": { - "type": "array", - "items": { - "$ref": "#/components/schemas/connect.error_details.Any" - }, - "description": "A list of messages that carry the error details. There is no limit on the number of messages." - } - }, - "title": "Connect Error", - "additionalProperties": true, - "description": "Error type returned by Connect: https://connectrpc.com/docs/go/errors/#http-representation" - }, - "connect.error_details.Any": { - "type": "object", - "properties": { - "type": { - "type": "string", - "description": "A URL that acts as a globally unique identifier for the type of the serialized message. For example: `type.googleapis.com/google.rpc.ErrorInfo`. This is used to determine the schema of the data in the `value` field and is the discriminator for the `debug` field." - }, - "value": { - "type": "string", - "format": "binary", - "description": "The Protobuf message, serialized as bytes and base64-encoded. The specific message type is identified by the `type` field." - }, - "debug": { - "oneOf": [ - { - "type": "object", - "title": "Any", - "additionalProperties": true, - "description": "Detailed error information." - } - ], - "discriminator": { - "propertyName": "type" - }, - "title": "Debug", - "description": "Deserialized error detail payload. The 'type' field indicates the schema. This field is for easier debugging and should not be relied upon for application logic." - } - }, - "additionalProperties": true, - "description": "Contains an arbitrary serialized message along with a @type that describes the type of the serialized message, with an additional debug field for ConnectRPC error details." - }, - "encoding": { - "title": "encoding", - "enum": [ - "proto", - "json" - ], - "description": "Define which encoding or 'Message-Codec' to use" - }, - "google.protobuf.Empty": { - "type": "object", - "description": "A generic empty message that you can re-use to avoid defining duplicated\n empty messages in your APIs. A typical example is to use it as the request\n or the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }" - }, - "google.protobuf.FieldMask": { - "type": "string", - "description": "`FieldMask` represents a set of symbolic field paths, for example:\n\n paths: \"f.a\"\n paths: \"f.b.d\"\n\n Here `f` represents a field in some root message, `a` and `b`\n fields in the message found in `f`, and `d` a field found in the\n message in `f.b`.\n\n Field masks are used to specify a subset of fields that should be\n returned by a get operation or modified by an update operation.\n Field masks also have a custom JSON encoding (see below).\n\n # Field Masks in Projections\n\n When used in the context of a projection, a response message or\n sub-message is filtered by the API to only contain those fields as\n specified in the mask. For example, if the mask in the previous\n example is applied to a response message as follows:\n\n f {\n a : 22\n b {\n d : 1\n x : 2\n }\n y : 13\n }\n z: 8\n\n The result will not contain specific values for fields x,y and z\n (their value will be set to the default, and omitted in proto text\n output):\n\n\n f {\n a : 22\n b {\n d : 1\n }\n }\n\n A repeated field is not allowed except at the last position of a\n paths string.\n\n If a FieldMask object is not present in a get operation, the\n operation applies to all fields (as if a FieldMask of all fields\n had been specified).\n\n Note that a field mask does not necessarily apply to the\n top-level response message. In case of a REST get operation, the\n field mask applies directly to the response, but in case of a REST\n list operation, the mask instead applies to each individual message\n in the returned resource list. In case of a REST custom method,\n other definitions may be used. Where the mask applies will be\n clearly documented together with its declaration in the API. In\n any case, the effect on the returned resource/resources is required\n behavior for APIs.\n\n # Field Masks in Update Operations\n\n A field mask in update operations specifies which fields of the\n targeted resource are going to be updated. The API is required\n to only change the values of the fields as specified in the mask\n and leave the others untouched. If a resource is passed in to\n describe the updated values, the API ignores the values of all\n fields not covered by the mask.\n\n If a repeated field is specified for an update operation, new values will\n be appended to the existing repeated field in the target resource. Note that\n a repeated field is only allowed in the last position of a `paths` string.\n\n If a sub-message is specified in the last position of the field mask for an\n update operation, then new value will be merged into the existing sub-message\n in the target resource.\n\n For example, given the target message:\n\n f {\n b {\n d: 1\n x: 2\n }\n c: [1]\n }\n\n And an update message:\n\n f {\n b {\n d: 10\n }\n c: [2]\n }\n\n then if the field mask is:\n\n paths: [\"f.b\", \"f.c\"]\n\n then the result will be:\n\n f {\n b {\n d: 10\n x: 2\n }\n c: [1, 2]\n }\n\n An implementation may provide options to override this default behavior for\n repeated and message fields.\n\n In order to reset a field's value to the default, the field must\n be in the mask and set to the default value in the provided resource.\n Hence, in order to reset all fields of a resource, provide a default\n instance of the resource and set all fields in the mask, or do\n not provide a mask as described below.\n\n If a field mask is not present on update, the operation applies to\n all fields (as if a field mask of all fields has been specified).\n Note that in the presence of schema evolution, this may mean that\n fields the client does not know and has therefore not filled into\n the request will be reset to their default. If this is unwanted\n behavior, a specific service may require a client to always specify\n a field mask, producing an error if not.\n\n As with get operations, the location of the resource which\n describes the updated values in the request message depends on the\n operation kind. In any case, the effect of the field mask is\n required to be honored by the API.\n\n ## Considerations for HTTP REST\n\n The HTTP kind of an update operation which uses a field mask must\n be set to PATCH instead of PUT in order to satisfy HTTP semantics\n (PUT must only be used for full updates).\n\n # JSON Encoding of Field Masks\n\n In JSON, a field mask is encoded as a single string where paths are\n separated by a comma. Fields name in each path are converted\n to/from lower-camel naming conventions.\n\n As an example, consider the following message declarations:\n\n message Profile {\n User user = 1;\n Photo photo = 2;\n }\n message User {\n string display_name = 1;\n string address = 2;\n }\n\n In proto a field mask for `Profile` may look as such:\n\n mask {\n paths: \"user.display_name\"\n paths: \"photo\"\n }\n\n In JSON, the same mask is represented as below:\n\n {\n mask: \"user.displayName,photo\"\n }\n\n # Field Masks and Oneof Fields\n\n Field masks treat fields in oneofs just as regular fields. Consider the\n following message:\n\n message SampleMessage {\n oneof test_oneof {\n string name = 4;\n SubMessage sub_message = 9;\n }\n }\n\n The field mask can be:\n\n mask {\n paths: \"name\"\n }\n\n Or:\n\n mask {\n paths: \"sub_message\"\n }\n\n Note that oneof type names (\"test_oneof\" in this case) cannot be used in\n paths.\n\n ## Field Mask Verification\n\n The implementation of any API method which has a FieldMask type field in the\n request should verify the included field paths, and return an\n `INVALID_ARGUMENT` error if any path is unmappable." - }, - "google.protobuf.ListValue": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "$ref": "#/components/schemas/google.protobuf.Value" }, - "title": "values", - "description": "Repeated field of dynamically typed values." - } - }, - "title": "ListValue", - "additionalProperties": false, - "description": "`ListValue` is a wrapper around a repeated field of values.\n\n The JSON representation for `ListValue` is JSON array." - }, - "google.protobuf.NullValue": { - "type": "string", - "title": "NullValue", - "enum": [ - "NULL_VALUE" - ], - "description": "`NullValue` is a singleton enumeration to represent the null value for the\n `Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`." - }, - "google.protobuf.Struct": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/google.protobuf.Value" - }, - "description": "`Struct` represents a structured data value, consisting of fields\n which map to dynamically typed values. In some languages, `Struct`\n might be supported by a native representation. For example, in\n scripting languages like JS a struct is represented as an\n object. The details of that representation are described together\n with the proto support for the language.\n\n The JSON representation for `Struct` is JSON object." - }, - "google.protobuf.Struct.FieldsEntry": { - "type": "object", - "properties": { - "key": { - "type": "string", - "title": "key" - }, - "value": { - "title": "value", - "$ref": "#/components/schemas/google.protobuf.Value" - } - }, - "title": "FieldsEntry", - "additionalProperties": false - }, - "google.protobuf.Timestamp": { - "type": "string", - "examples": [ - "2023-01-15T01:30:15.01Z", - "2024-12-25T12:00:00Z" - ], - "format": "date-time", - "description": "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n Timestamp timestamp;\n timestamp.set_seconds(time(NULL));\n timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n struct timeval tv;\n gettimeofday(&tv, NULL);\n\n Timestamp timestamp;\n timestamp.set_seconds(tv.tv_sec);\n timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n FILETIME ft;\n GetSystemTimeAsFileTime(&ft);\n UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n\n // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n Timestamp timestamp;\n timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n\n long millis = System.currentTimeMillis();\n\n Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n .setNanos((int) ((millis % 1000) * 1000000)).build();\n\n Example 5: Compute Timestamp from Java `Instant.now()`.\n\n Instant now = Instant.now();\n\n Timestamp timestamp =\n Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n .setNanos(now.getNano()).build();\n\n Example 6: Compute Timestamp from current time in Python.\n\n timestamp = Timestamp()\n timestamp.GetCurrentTime()\n\n # JSON Mapping\n\n In JSON format, the Timestamp type is encoded as a string in the\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n where {year} is always expressed using four digits while {month}, {day},\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n is required. A proto3 JSON serializer should always use UTC (as indicated by\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n able to accept both UTC and other timezones (as indicated by an offset).\n\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n 01:30 UTC on January 15, 2017.\n\n In JavaScript, one can convert a Date object to this format using the\n standard\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n method. In Python, a standard `datetime.datetime` object can be converted\n to this format using\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n the Joda Time's [`ISODateTimeFormat.dateTime()`](\n http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()\n ) to obtain a formatter capable of generating timestamps in this format." - }, - "google.protobuf.Value": { - "oneOf": [ - { - "type": "null" - }, - { - "type": "number" - }, - { - "type": "string" + "description": "Success" }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" + } + }, + "security": [ { - "type": "boolean" + "oauth2": [ + "read_settings" + ] }, { - "type": "array" + "apiKey": [] + } + ], + "summary": "List organization settings [Requires: read_settings]", + "tags": [ + "libops.v1.OrganizationSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:read", + "x-scopes": [ + "read_settings" + ] + } + }, + "/libops.v1.OrganizationSettingService/UpdateOrganizationSetting": { + "post": { + "description": "Update an organization setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n", + "operationId": "libops.v1.OrganizationSettingService.UpdateOrganizationSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, { - "type": "object", - "additionalProperties": true + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } ], - "description": "`Value` represents a dynamically typed value which can be either\n null, a number, a string, a boolean, a recursive struct value, or a\n list of values. A producer of value is expected to set one of these\n variants. Absence of any variant indicates an error.\n\n The JSON representation for `Value` is JSON value." - }, - "libops.v1.Account": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id", - "description": "Unique account identifier (UUID)" - }, - "email": { - "type": "string", - "title": "email", - "description": "User's email address" - }, - "name": { - "type": "string", - "title": "name", - "description": "Display name" - }, - "githubUsername": { - "type": "string", - "title": "github_username", - "description": "GitHub username for integration", - "nullable": true - }, - "role": { - "title": "role", - "description": "System-wide role", - "$ref": "#/components/schemas/libops.v1.AccountRole" - }, - "status": { - "title": "status", - "description": "Account status", - "$ref": "#/components/schemas/libops.v1.AccountStatus" - }, - "authMethod": { - "title": "auth_method", - "description": "How the user authenticates", - "$ref": "#/components/schemas/libops.v1.common.AuthMethod" - }, - "verified": { - "type": "boolean", - "title": "verified", - "description": "Email verification status" + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSettingRequest" + } + } }, - "verifiedAt": { - "type": "string", - "title": "verified_at", - "description": "Timestamp when verified (RFC3339)", - "nullable": true - } - }, - "title": "Account", - "additionalProperties": false - }, - "libops.v1.AccountRole": { - "type": "string", - "title": "AccountRole", - "enum": [ - "ACCOUNT_ROLE_UNSPECIFIED", - "ACCOUNT_ROLE_USER", - "ACCOUNT_ROLE_ADMIN" - ] - }, - "libops.v1.AccountStatus": { - "type": "string", - "title": "AccountStatus", - "enum": [ - "ACCOUNT_STATUS_UNSPECIFIED", - "ACCOUNT_STATUS_ACTIVE", - "ACCOUNT_STATUS_SUSPENDED", - "ACCOUNT_STATUS_DELETED" - ] - }, - "libops.v1.AdminCreateOrganizationRequest": { - "type": "object", - "properties": { - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.admin.AdminFolderConfig" - } + "required": true }, - "title": "AdminCreateOrganizationRequest", - "additionalProperties": false - }, - "libops.v1.AdminCreateOrganizationResponse": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateOrganizationSettingResponse" + } + } + }, + "description": "Success" }, - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.admin.AdminFolderConfig" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "AdminCreateOrganizationResponse", - "additionalProperties": false - }, - "libops.v1.AdminCreateProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "manage_settings" + ] }, - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.admin.AdminProjectConfig" - } - }, - "title": "AdminCreateProjectRequest", - "additionalProperties": false - }, - "libops.v1.AdminCreateProjectResponse": { - "type": "object", - "properties": { - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.admin.AdminProjectConfig" + { + "apiKey": [] } - }, - "title": "AdminCreateProjectResponse", - "additionalProperties": false - }, - "libops.v1.AdminCreateSiteRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "projectId": { - "type": "string", - "title": "project_id" + ], + "summary": "Update an organization setting [Requires: manage_settings]", + "tags": [ + "libops.v1.OrganizationSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:write", + "x-scopes": [ + "manage_settings" + ] + } + }, + "/libops.v1.ProjectFirewallService/CreateProjectFirewallRule": { + "post": { + "description": "Add firewall rule to all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:firewall` |\n| Project | `write:firewall` |\n", + "operationId": "libops.v1.ProjectFirewallService.CreateProjectFirewallRule", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.admin.AdminSiteConfig" - } - }, - "title": "AdminCreateSiteRequest", - "additionalProperties": false - }, - "libops.v1.AdminCreateSiteResponse": { - "type": "object", - "properties": { - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.admin.AdminSiteConfig" - } - }, - "title": "AdminCreateSiteResponse", - "additionalProperties": false - }, - "libops.v1.AdminDeleteOrganizationRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "AdminDeleteOrganizationRequest", - "additionalProperties": false - }, - "libops.v1.AdminDeleteProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectFirewallRuleRequest" + } + } }, - "projectId": { - "type": "string", - "title": "project_id" - } + "required": true }, - "title": "AdminDeleteProjectRequest", - "additionalProperties": false - }, - "libops.v1.AdminDeleteSiteRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "projectId": { - "type": "string", - "title": "project_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectFirewallRuleResponse" + } + } + }, + "description": "Success" }, - "siteName": { - "type": "string", - "title": "site_name" - } - }, - "title": "AdminDeleteSiteRequest", - "additionalProperties": false - }, - "libops.v1.AdminGetAccountByEmailRequest": { - "type": "object", - "properties": { - "email": { - "type": "string", - "title": "email" - } - }, - "title": "AdminGetAccountByEmailRequest", - "additionalProperties": false - }, - "libops.v1.AdminGetAccountByEmailResponse": { - "type": "object", - "properties": { - "account": { - "title": "account", - "$ref": "#/components/schemas/libops.v1.Account" - } - }, - "title": "AdminGetAccountByEmailResponse", - "additionalProperties": false - }, - "libops.v1.AdminGetOrganizationRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "AdminGetOrganizationRequest", - "additionalProperties": false - }, - "libops.v1.AdminGetOrganizationResponse": { - "type": "object", - "properties": { - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.admin.AdminFolderConfig" + "security": [ + { + "oauth2": [ + "write:firewall" + ] + }, + { + "apiKey": [] } - }, - "title": "AdminGetOrganizationResponse", - "additionalProperties": false - }, - "libops.v1.AdminGetProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "summary": "Add firewall rule to all sites in a project [Requires: write:firewall]", + "tags": [ + "libops.v1.ProjectFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "write:firewall" + ] + } + }, + "/libops.v1.ProjectFirewallService/DeleteProjectFirewallRule": { + "post": { + "description": "Remove a firewall rule from all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:firewall` |\n| Project | `delete:firewall` |\n", + "operationId": "libops.v1.ProjectFirewallService.DeleteProjectFirewallRule", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "projectId": { - "type": "string", - "title": "project_id" - } - }, - "title": "AdminGetProjectRequest", - "additionalProperties": false - }, - "libops.v1.AdminGetProjectResponse": { - "type": "object", - "properties": { - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.admin.AdminProjectConfig" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "AdminGetProjectResponse", - "additionalProperties": false - }, - "libops.v1.AdminGetSiteRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteProjectFirewallRuleRequest" + } + } }, - "projectId": { - "type": "string", - "title": "project_id" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "siteName": { - "type": "string", - "title": "site_name" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "AdminGetSiteRequest", - "additionalProperties": false - }, - "libops.v1.AdminGetSiteResponse": { - "type": "object", - "properties": { - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.admin.AdminSiteConfig" + "security": [ + { + "oauth2": [ + "delete:firewall" + ] + }, + { + "apiKey": [] } - }, - "title": "AdminGetSiteResponse", - "additionalProperties": false - }, - "libops.v1.AdminListAllProjectsRequest": { - "type": "object", - "properties": { - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + ], + "summary": "Remove a firewall rule from all sites in a project [Requires: delete:firewall]", + "tags": [ + "libops.v1.ProjectFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "delete:firewall" + ] + } + }, + "/libops.v1.ProjectFirewallService/ListProjectFirewallRules": { + "get": { + "description": "List firewall rules applied to all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n", + "operationId": "libops.v1.ProjectFirewallService.ListProjectFirewallRules.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "filter": { - "type": "string", - "title": "filter", - "description": "e.g., \"organization_id=foo\" or \"billing_account=bar\"", - "nullable": true - } - }, - "title": "AdminListAllProjectsRequest", - "additionalProperties": false - }, - "libops.v1.AdminListAllProjectsResponse": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.admin.AdminProjectConfig" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesRequest" + } + } }, - "title": "projects" + "in": "query", + "name": "message" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" - } - }, - "title": "AdminListAllProjectsResponse", - "additionalProperties": false - }, - "libops.v1.AdminListAllSitesRequest": { - "type": "object", - "properties": { - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "filter": { - "type": "string", - "title": "filter", - "description": "e.g., \"organization_id=foo\" or \"status=active\"", - "nullable": true + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "AdminListAllSitesRequest", - "additionalProperties": false - }, - "libops.v1.AdminListAllSitesResponse": { - "type": "object", - "properties": { - "sites": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.admin.AdminSiteConfig" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesResponse" + } + } }, - "title": "sites" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "AdminListAllSitesResponse", - "additionalProperties": false - }, - "libops.v1.AdminListOrganizationProjectsRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "read:firewall" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "AdminListOrganizationProjectsRequest", - "additionalProperties": false + ], + "summary": "List firewall rules applied to all sites in a project [Requires: read:firewall]", + "tags": [ + "libops.v1.ProjectFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:firewall" + ] }, - "libops.v1.AdminListOrganizationProjectsResponse": { - "type": "object", - "properties": { - "projectIds": { - "type": "array", - "items": { - "type": "string" - }, - "title": "project_ids" + "post": { + "description": "List firewall rules applied to all sites in a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n", + "operationId": "libops.v1.ProjectFirewallService.ListProjectFirewallRules", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "AdminListOrganizationProjectsResponse", - "additionalProperties": false - }, - "libops.v1.AdminListOrganizationsRequest": { - "type": "object", - "properties": { - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" - }, - "pageToken": { - "type": "string", - "title": "page_token" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesRequest" + } + } }, - "filter": { - "type": "string", - "title": "filter", - "description": "e.g., \"gcp_parent=folders/123\"", - "nullable": true - } + "required": true }, - "title": "AdminListOrganizationsRequest", - "additionalProperties": false - }, - "libops.v1.AdminListOrganizationsResponse": { - "type": "object", - "properties": { - "organizations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.admin.AdminFolderConfig" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectFirewallRulesResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } }, - "title": "organizations" - }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "description": "Error" } }, - "title": "AdminListOrganizationsResponse", - "additionalProperties": false - }, - "libops.v1.AdminListProjectsRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "nullable": true - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "read:firewall" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "AdminListProjectsRequest", - "additionalProperties": false - }, - "libops.v1.AdminListProjectsResponse": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.admin.AdminProjectConfig" - }, - "title": "projects" + ], + "summary": "List firewall rules applied to all sites in a project [Requires: read:firewall]", + "tags": [ + "libops.v1.ProjectFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:firewall" + ] + } + }, + "/libops.v1.ProjectMemberService/CreateProjectMember": { + "post": { + "description": "Add a member to a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n", + "operationId": "libops.v1.ProjectMemberService.CreateProjectMember", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "AdminListProjectsResponse", - "additionalProperties": false - }, - "libops.v1.AdminListSitesRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "nullable": true - }, - "projectId": { - "type": "string", - "title": "project_id", - "nullable": true - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectMemberRequest" + } + } }, - "pageToken": { - "type": "string", - "title": "page_token" - } + "required": true }, - "title": "AdminListSitesRequest", - "additionalProperties": false - }, - "libops.v1.AdminListSitesResponse": { - "type": "object", - "properties": { - "sites": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.admin.AdminSiteConfig" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectMemberResponse" + } + } }, - "title": "sites" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "AdminListSitesResponse", - "additionalProperties": false - }, - "libops.v1.AdminUpdateOrganizationRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.admin.AdminFolderConfig" + "security": [ + { + "oauth2": [ + "write:members" + ] }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" - } - }, - "title": "AdminUpdateOrganizationRequest", - "additionalProperties": false - }, - "libops.v1.AdminUpdateOrganizationResponse": { - "type": "object", - "properties": { - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.admin.AdminFolderConfig" + { + "apiKey": [] } - }, - "title": "AdminUpdateOrganizationResponse", - "additionalProperties": false - }, - "libops.v1.AdminUpdateProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "projectId": { - "type": "string", - "title": "project_id" - }, - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.admin.AdminProjectConfig" + ], + "summary": "Add a member to a project [Requires: write:members]", + "tags": [ + "libops.v1.ProjectMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:admin", + "x-scopes": [ + "write:members" + ] + } + }, + "/libops.v1.ProjectMemberService/DeleteProjectMember": { + "post": { + "description": "Remove a member from a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:members` |\n| Project | `delete:members` |\n", + "operationId": "libops.v1.ProjectMemberService.DeleteProjectMember", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" - } - }, - "title": "AdminUpdateProjectRequest", - "additionalProperties": false - }, - "libops.v1.AdminUpdateProjectResponse": { - "type": "object", - "properties": { - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.admin.AdminProjectConfig" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "AdminUpdateProjectResponse", - "additionalProperties": false - }, - "libops.v1.AdminUpdateSiteRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "projectId": { - "type": "string", - "title": "project_id" - }, - "siteName": { - "type": "string", - "title": "site_name" - }, - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.admin.AdminSiteConfig" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteProjectMemberRequest" + } + } }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" - } - }, - "title": "AdminUpdateSiteRequest", - "additionalProperties": false - }, - "libops.v1.AdminUpdateSiteResponse": { - "type": "object", - "properties": { - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.admin.AdminSiteConfig" - } + "required": true }, - "title": "AdminUpdateSiteResponse", - "additionalProperties": false - }, - "libops.v1.ApiKeyMetadata": { - "type": "object", - "properties": { - "apiKeyId": { - "type": "string", - "title": "api_key_id", - "description": "UUID of the API key" - }, - "name": { - "type": "string", - "title": "name", - "description": "User-friendly name" - }, - "description": { - "type": "string", - "title": "description", - "description": "Optional description" - }, - "scopes": { - "type": "array", - "items": { - "type": "string" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } }, - "title": "scopes", - "description": "Scope restrictions (empty = no restrictions)" + "description": "Success" }, - "active": { - "type": "boolean", - "title": "active", - "description": "Whether the key is active" - }, - "createdAt": { - "type": [ - "integer", - "string" - ], - "title": "created_at", - "format": "int64", - "description": "Unix timestamp" - }, - "lastUsedAt": { - "type": [ - "integer", - "string" - ], - "title": "last_used_at", - "format": "int64", - "description": "Unix timestamp (0 if never used)" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ApiKeyMetadata", - "additionalProperties": false - }, - "libops.v1.AppendTaskLogRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "delete:members" + ] }, - "taskId": { - "type": "string", - "title": "task_id" + { + "apiKey": [] + } + ], + "summary": "Remove a member from a project [Requires: delete:members]", + "tags": [ + "libops.v1.ProjectMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:admin", + "x-scopes": [ + "delete:members" + ] + } + }, + "/libops.v1.ProjectMemberService/ListProjectMembers": { + "get": { + "description": "List members of a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n", + "operationId": "libops.v1.ProjectMemberService.ListProjectMembers.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "entry": { - "title": "entry", - "$ref": "#/components/schemas/libops.v1.TaskLogEntry" - } - }, - "title": "AppendTaskLogRequest", - "additionalProperties": false - }, - "libops.v1.AppendTaskLogResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "title": "success" - } - }, - "title": "AppendTaskLogResponse", - "additionalProperties": false - }, - "libops.v1.AssistantChatRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "description": "Target organization (required)." + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "projectId": { - "type": "string", - "title": "project_id", - "description": "Optional project scope for the request." + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectMembersRequest" + } + } + }, + "in": "query", + "name": "message" }, - "siteId": { - "type": "string", - "title": "site_id", - "description": "Optional site scope for the request." + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "message": { - "type": "string", - "title": "message", - "description": "The user message to execute." + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "clientRequestId": { - "type": "string", - "title": "client_request_id", - "description": "Optional client-generated request identifier for idempotency." + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "metadata": { - "type": "object", - "title": "metadata", - "additionalProperties": { - "type": "string", - "title": "value" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectMembersResponse" + } + } }, - "description": "Optional metadata for routing or model selection." - }, - "agentModel": { - "type": "string", - "title": "agent_model", - "description": "Optional coding agent model selection." + "description": "Success" }, - "harness": { - "title": "harness", - "description": "Optional coding harness selection.", - "$ref": "#/components/schemas/libops.v1.TaskHarness" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "AssistantChatRequest", - "additionalProperties": false, - "description": "AssistantChatRequest sends a natural language request scoped to a context." - }, - "libops.v1.AssistantChatRequest.MetadataEntry": { - "type": "object", - "properties": { - "key": { - "type": "string", - "title": "key" + "security": [ + { + "oauth2": [ + "read:members" + ] }, - "value": { - "type": "string", - "title": "value" + { + "apiKey": [] } - }, - "title": "MetadataEntry", - "additionalProperties": false + ], + "summary": "List members of a project [Requires: read:members]", + "tags": [ + "libops.v1.ProjectMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:members" + ] }, - "libops.v1.AssistantChatResponse": { - "type": "object", - "properties": { - "requestId": { - "type": "string", - "title": "request_id", - "description": "Server-generated request identifier." - }, - "status": { - "type": "string", - "title": "status", - "description": "Status for the queued request (e.g., \"queued\")." + "post": { + "description": "List members of a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n", + "operationId": "libops.v1.ProjectMemberService.ListProjectMembers", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "reply": { - "type": "string", - "title": "reply", - "description": "Optional immediate reply for UI display." + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectMembersRequest" + } + } + }, + "required": true }, - "title": "AssistantChatResponse", - "additionalProperties": false, - "description": "AssistantChatResponse returns the queued request details." - }, - "libops.v1.CancelTaskRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectMembersResponse" + } + } + }, + "description": "Success" }, - "taskId": { - "type": "string", - "title": "task_id" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CancelTaskRequest", - "additionalProperties": false - }, - "libops.v1.CancelTaskResponse": { - "type": "object", - "properties": { - "task": { - "title": "task", - "$ref": "#/components/schemas/libops.v1.Task" + "security": [ + { + "oauth2": [ + "read:members" + ] + }, + { + "apiKey": [] } - }, - "title": "CancelTaskResponse", - "additionalProperties": false - }, - "libops.v1.CheckConvergenceRequest": { - "type": "object", - "properties": { - "resourceType": { - "title": "resource_type", - "$ref": "#/components/schemas/libops.v1.ConvergenceResourceType" + ], + "summary": "List members of a project [Requires: read:members]", + "tags": [ + "libops.v1.ProjectMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:members" + ] + } + }, + "/libops.v1.ProjectMemberService/UpdateProjectMember": { + "post": { + "description": "Update a member's role\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n", + "operationId": "libops.v1.ProjectMemberService.UpdateProjectMember", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "resourceId": { - "type": "string", - "title": "resource_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectMemberRequest" + } + } }, - "repair": { - "type": "boolean", - "title": "repair" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectMemberResponse" + } + } + }, + "description": "Success" }, - "includeChildren": { - "type": "boolean", - "title": "include_children" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CheckConvergenceRequest", - "additionalProperties": false - }, - "libops.v1.CheckConvergenceResponse": { - "type": "object", - "properties": { - "findings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.ConvergenceFinding" - }, - "title": "findings" - }, - "repairRequested": { - "type": "boolean", - "title": "repair_requested" - } - }, - "title": "CheckConvergenceResponse", - "additionalProperties": false - }, - "libops.v1.ControlPlanePubSubEnvelope": { - "type": "object", - "allOf": [ - { - "properties": { - "envelopeId": { - "type": "string", - "title": "envelope_id", - "description": "Envelope ID is unique for this Pub/Sub payload." - }, - "schemaVersion": { - "type": "integer", - "title": "schema_version", - "format": "int32", - "description": "Schema version is incremented when this envelope changes incompatibly." - }, - "dedupeKey": { - "type": "string", - "title": "dedupe_key", - "description": "Dedupe key is stable for retries of the same logical request." - }, - "requestId": { - "type": "string", - "title": "request_id", - "description": "Request ID links this message to the originating customer mutation." - }, - "traceparent": { - "type": "string", - "title": "traceparent", - "description": "Traceparent carries the W3C trace context across Pub/Sub." - } - } - }, + "security": [ { - "oneOf": [ - { - "properties": { - "siteReconciliation": { - "title": "site_reconciliation", - "description": "Site reconciliation asks a site controller to reconcile local state.", - "$ref": "#/components/schemas/libops.v1.SiteReconciliationPubSubRequest" - } - }, - "title": "site_reconciliation", - "required": [ - "siteReconciliation" - ] - } + "oauth2": [ + "write:members" ] + }, + { + "apiKey": [] } ], - "title": "ControlPlanePubSubEnvelope", - "additionalProperties": false, - "description": "ControlPlanePubSubEnvelope is the versioned Pub/Sub contract for messages\n published by control-plane producers and consumed by Cloud Run workers." - }, - "libops.v1.ConvergenceFinding": { - "type": "object", - "properties": { - "resourceType": { - "type": "string", - "title": "resource_type" - }, - "resourceId": { - "type": "string", - "title": "resource_id" - }, - "name": { - "type": "string", - "title": "name" - }, - "status": { - "type": "string", - "title": "status" - }, - "severity": { - "type": "string", - "title": "severity" - }, - "reason": { - "type": "string", - "title": "reason" + "summary": "Update a member's role [Requires: write:members]", + "tags": [ + "libops.v1.ProjectMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:admin", + "x-scopes": [ + "write:members" + ] + } + }, + "/libops.v1.ProjectSecretService/CreateProjectSecret": { + "post": { + "description": "Create a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", + "operationId": "libops.v1.ProjectSecretService.CreateProjectSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "action": { - "type": "string", - "title": "action" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectSecretRequest" + } + } }, - "eventType": { - "type": "string", - "title": "event_type" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectSecretResponse" + } + } + }, + "description": "Success" }, - "blockers": { - "type": "array", - "items": { - "type": "string" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } }, - "title": "blockers" + "description": "Error" } }, - "title": "ConvergenceFinding", - "additionalProperties": false - }, - "libops.v1.ConvergenceResourceType": { - "type": "string", - "title": "ConvergenceResourceType", - "enum": [ - "CONVERGENCE_RESOURCE_TYPE_UNSPECIFIED", - "CONVERGENCE_RESOURCE_TYPE_ORGANIZATION", - "CONVERGENCE_RESOURCE_TYPE_PROJECT", - "CONVERGENCE_RESOURCE_TYPE_SITE" - ] - }, - "libops.v1.CreateAccountRequest": { - "type": "object", - "properties": { - "email": { - "type": "string", - "title": "email" - }, - "name": { - "type": "string", - "title": "name" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "githubUsername": { - "type": "string", - "title": "github_username", - "nullable": true + { + "apiKey": [] } - }, - "title": "CreateAccountRequest", - "additionalProperties": false - }, - "libops.v1.CreateAccountResponse": { - "type": "object", - "properties": { - "account": { - "title": "account", - "$ref": "#/components/schemas/libops.v1.Account" + ], + "summary": "Create a project secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.ProjectSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.ProjectSecretService/DeleteProjectSecret": { + "post": { + "description": "Delete a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", + "operationId": "libops.v1.ProjectSecretService.DeleteProjectSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "CreateAccountResponse", - "additionalProperties": false - }, - "libops.v1.CreateApiKeyRequest": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "name", - "description": "User-friendly name for the key" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteProjectSecretRequest" + } + } }, - "description": { - "type": "string", - "title": "description", - "description": "Optional description" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "scopes": { - "type": "array", - "items": { - "type": "string" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } }, - "title": "scopes", - "description": "Optional scope restrictions (e.g., [\"organization:read\", \"project:write\"])" + "description": "Error" } }, - "title": "CreateApiKeyRequest", - "additionalProperties": false - }, - "libops.v1.CreateApiKeyResponse": { - "type": "object", - "properties": { - "apiKeyId": { - "type": "string", - "title": "api_key_id", - "description": "UUID of the created key" - }, - "apiKey": { - "type": "string", - "title": "api_key", - "description": "The actual key value (only returned once!)" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "name": { - "type": "string", - "title": "name" + { + "apiKey": [] + } + ], + "summary": "Delete a project secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.ProjectSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.ProjectSecretService/GetProjectSecret": { + "get": { + "description": "Get a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", + "operationId": "libops.v1.ProjectSecretService.GetProjectSecret.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "description": { - "type": "string", - "title": "description" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "scopes": { - "type": "array", - "items": { - "type": "string" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSecretRequest" + } + } }, - "title": "scopes" - }, - "createdAt": { - "type": [ - "integer", - "string" - ], - "title": "created_at", - "format": "int64" - } - }, - "title": "CreateApiKeyResponse", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationFirewallRuleRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "ruleType": { - "title": "rule_type", - "$ref": "#/components/schemas/libops.v1.FirewallRuleType" + "in": "query", + "name": "message" }, - "cidr": { - "type": "string", - "title": "cidr" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "name": { - "type": "string", - "title": "name" - } - }, - "title": "CreateOrganizationFirewallRuleRequest", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationFirewallRuleResponse": { - "type": "object", - "properties": { - "rule": { - "title": "rule", - "$ref": "#/components/schemas/libops.v1.OrganizationFirewallRule" - } - }, - "title": "CreateOrganizationFirewallRuleResponse", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationMemberRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "email": { - "type": "string", - "title": "email", - "description": "Email address of the member account to add" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "role": { - "type": "string", - "title": "role", - "description": "\"owner\", \"developer\", \"read\"" - } - }, - "title": "CreateOrganizationMemberRequest", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationMemberResponse": { - "type": "object", - "properties": { - "member": { - "title": "member", - "$ref": "#/components/schemas/libops.v1.MemberDetail" - } - }, - "title": "CreateOrganizationMemberResponse", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationRequest": { - "type": "object", - "properties": { - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.common.FolderConfig" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "CreateOrganizationRequest", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationResponse": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSecretResponse" + } + } + }, + "description": "Success" }, - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.common.FolderConfig" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateOrganizationResponse", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationSecretRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "name": { - "type": "string", - "title": "name", - "description": "e.g., \"DATABASE_URL\"" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "value": { - "type": "string", - "title": "value", - "description": "Secret value (redacted in audit logs)" - } - }, - "title": "CreateOrganizationSecretRequest", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.OrganizationSecret" + { + "apiKey": [] } - }, - "title": "CreateOrganizationSecretResponse", - "additionalProperties": false + ], + "summary": "Get a project secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.ProjectSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_secrets" + ] }, - "libops.v1.CreateOrganizationSettingRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "key": { - "type": "string", - "title": "key" + "post": { + "description": "Get a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", + "operationId": "libops.v1.ProjectSecretService.GetProjectSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "value": { - "type": "string", - "title": "value" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSecretRequest" + } + } }, - "editable": { - "type": "boolean", - "title": "editable" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSecretResponse" + } + } + }, + "description": "Success" }, - "description": { - "type": "string", - "title": "description" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateOrganizationSettingRequest", - "additionalProperties": false - }, - "libops.v1.CreateOrganizationSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.OrganizationSetting" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] + }, + { + "apiKey": [] } - }, - "title": "CreateOrganizationSettingResponse", - "additionalProperties": false - }, - "libops.v1.CreateProjectFirewallRuleRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + ], + "summary": "Get a project secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.ProjectSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.ProjectSecretService/ListProjectSecrets": { + "get": { + "description": "List a project's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", + "operationId": "libops.v1.ProjectSecretService.ListProjectSecrets.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "ruleType": { - "title": "rule_type", - "$ref": "#/components/schemas/libops.v1.FirewallRuleType" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "cidr": { - "type": "string", - "title": "cidr" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSecretsRequest" + } + } + }, + "in": "query", + "name": "message" }, - "name": { - "type": "string", - "title": "name" - } - }, - "title": "CreateProjectFirewallRuleRequest", - "additionalProperties": false - }, - "libops.v1.CreateProjectFirewallRuleResponse": { - "type": "object", - "properties": { - "rule": { - "title": "rule", - "$ref": "#/components/schemas/libops.v1.ProjectFirewallRule" - } - }, - "title": "CreateProjectFirewallRuleResponse", - "additionalProperties": false - }, - "libops.v1.CreateProjectMemberRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "email": { - "type": "string", - "title": "email", - "description": "Email address of the member account to add" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "role": { - "type": "string", - "title": "role", - "description": "\"developer\", \"read\"" - } - }, - "title": "CreateProjectMemberRequest", - "additionalProperties": false - }, - "libops.v1.CreateProjectMemberResponse": { - "type": "object", - "properties": { - "member": { - "title": "member", - "$ref": "#/components/schemas/libops.v1.MemberDetail" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "CreateProjectMemberResponse", - "additionalProperties": false - }, - "libops.v1.CreateProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSecretsResponse" + } + } + }, + "description": "Success" }, - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" - } - }, - "title": "CreateProjectRequest", - "additionalProperties": false - }, - "libops.v1.CreateProjectResponse": { - "type": "object", - "properties": { - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateProjectResponse", - "additionalProperties": false - }, - "libops.v1.CreateProjectRuntimeRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "runtime": { - "title": "runtime", - "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig" - } - }, - "title": "CreateProjectRuntimeRequest", - "additionalProperties": false - }, - "libops.v1.CreateProjectRuntimeResponse": { - "type": "object", - "properties": { - "runtime": { - "title": "runtime", - "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig" + { + "apiKey": [] } - }, - "title": "CreateProjectRuntimeResponse", - "additionalProperties": false + ], + "summary": "List a project's secrets [Requires: manage_secrets]", + "tags": [ + "libops.v1.ProjectSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_secrets" + ] }, - "libops.v1.CreateProjectSecretRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" - }, - "name": { - "type": "string", - "title": "name" + "post": { + "description": "List a project's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", + "operationId": "libops.v1.ProjectSecretService.ListProjectSecrets", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "value": { - "type": "string", - "title": "value" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSecretsRequest" + } + } + }, + "required": true }, - "title": "CreateProjectSecretRequest", - "additionalProperties": false - }, - "libops.v1.CreateProjectSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.ProjectSecret" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSecretsResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateProjectSecretResponse", - "additionalProperties": false - }, - "libops.v1.CreateProjectSettingRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "key": { - "type": "string", - "title": "key" + { + "apiKey": [] + } + ], + "summary": "List a project's secrets [Requires: manage_secrets]", + "tags": [ + "libops.v1.ProjectSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.ProjectSecretService/UpdateProjectSecret": { + "post": { + "description": "Update a project secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n", + "operationId": "libops.v1.ProjectSecretService.UpdateProjectSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "value": { - "type": "string", - "title": "value" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectSecretRequest" + } + } }, - "editable": { - "type": "boolean", - "title": "editable" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectSecretResponse" + } + } + }, + "description": "Success" }, - "description": { - "type": "string", - "title": "description" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateProjectSettingRequest", - "additionalProperties": false - }, - "libops.v1.CreateProjectSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.ProjectSetting" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] + }, + { + "apiKey": [] } - }, - "title": "CreateProjectSettingResponse", - "additionalProperties": false - }, - "libops.v1.CreateSiteDomainRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "summary": "Update a project secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.ProjectSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.ProjectService/CreateProject": { + "post": { + "description": "Create a new project (organization)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", + "operationId": "libops.v1.ProjectService.CreateProject", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "domain": { - "title": "domain", - "$ref": "#/components/schemas/libops.v1.common.DomainConfig" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectRequest" + } + } + }, + "required": true }, - "title": "CreateSiteDomainRequest", - "additionalProperties": false - }, - "libops.v1.CreateSiteDomainResponse": { - "type": "object", - "properties": { - "domain": { - "title": "domain", - "$ref": "#/components/schemas/libops.v1.common.DomainConfig" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateSiteDomainResponse", - "additionalProperties": false - }, - "libops.v1.CreateSiteFirewallRuleRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" - }, - "ruleType": { - "title": "rule_type", - "$ref": "#/components/schemas/libops.v1.FirewallRuleType" + "security": [ + { + "oauth2": [ + "write:organization" + ] }, - "cidr": { - "type": "string", - "title": "cidr" + { + "apiKey": [] + } + ], + "summary": "Create a new project (organization) [Requires: write:organization]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:write", + "x-scopes": [ + "write:organization" + ] + } + }, + "/libops.v1.ProjectService/CreateProjectRuntime": { + "post": { + "description": "Create a runtime host for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:project` |\n| Project | `write:project` |\n", + "operationId": "libops.v1.ProjectService.CreateProjectRuntime", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "name": { - "type": "string", - "title": "name" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectRuntimeRequest" + } + } + }, + "required": true }, - "title": "CreateSiteFirewallRuleRequest", - "additionalProperties": false - }, - "libops.v1.CreateSiteFirewallRuleResponse": { - "type": "object", - "properties": { - "rule": { - "title": "rule", - "$ref": "#/components/schemas/libops.v1.SiteFirewallRule" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectRuntimeResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateSiteFirewallRuleResponse", - "additionalProperties": false - }, - "libops.v1.CreateSiteMemberRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" - }, - "email": { - "type": "string", - "title": "email", - "description": "Email address of the member account to add" + "security": [ + { + "oauth2": [ + "write:project" + ] }, - "role": { - "type": "string", - "title": "role", - "description": "\"developer\", \"read\"" + { + "apiKey": [] } - }, - "title": "CreateSiteMemberRequest", - "additionalProperties": false - }, - "libops.v1.CreateSiteMemberResponse": { - "type": "object", - "properties": { - "member": { - "title": "member", - "$ref": "#/components/schemas/libops.v1.MemberDetail" + ], + "summary": "Create a runtime host for a project. [Requires: write:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "write:project" + ] + } + }, + "/libops.v1.ProjectService/DeleteProject": { + "post": { + "description": "Delete a project (must have no sites)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:project` |\n| Project | `delete:project` |\n", + "operationId": "libops.v1.ProjectService.DeleteProject", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "CreateSiteMemberResponse", - "additionalProperties": false - }, - "libops.v1.CreateSiteRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteProjectRequest" + } + } }, - "projectId": { - "type": "string", - "title": "project_id" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.common.SiteConfig" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateSiteRequest", - "additionalProperties": false - }, - "libops.v1.CreateSiteResponse": { - "type": "object", - "properties": { - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.common.SiteConfig" + "security": [ + { + "oauth2": [ + "delete:project" + ] + }, + { + "apiKey": [] } - }, - "title": "CreateSiteResponse", - "additionalProperties": false - }, - "libops.v1.CreateSiteSecretRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "summary": "Delete a project (must have no sites) [Requires: delete:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:admin", + "x-scopes": [ + "delete:project" + ] + } + }, + "/libops.v1.ProjectService/GetProject": { + "get": { + "description": "Get project configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.GetProject.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "name": { - "type": "string", - "title": "name" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectRequest" + } + } + }, + "in": "query", + "name": "message" }, - "value": { - "type": "string", - "title": "value" - } - }, - "title": "CreateSiteSecretRequest", - "additionalProperties": false - }, - "libops.v1.CreateSiteSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.SiteSecret" - } - }, - "title": "CreateSiteSecretResponse", - "additionalProperties": false - }, - "libops.v1.CreateSiteSettingRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "key": { - "type": "string", - "title": "key" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "value": { - "type": "string", - "title": "value" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "editable": { - "type": "boolean", - "title": "editable" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectResponse" + } + } + }, + "description": "Success" }, - "description": { - "type": "string", - "title": "description" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateSiteSettingRequest", - "additionalProperties": false - }, - "libops.v1.CreateSiteSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.SiteSetting" + "security": [ + { + "oauth2": [ + "read:project" + ] + }, + { + "apiKey": [] } - }, - "title": "CreateSiteSettingResponse", - "additionalProperties": false + ], + "summary": "Get project configuration (organization view) [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] }, - "libops.v1.CreateSshKeyRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" - }, - "publicKey": { - "type": "string", - "title": "public_key" + "post": { + "description": "Get project configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.GetProject", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "name": { - "type": "string", - "title": "name", - "nullable": true + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectRequest" + } + } + }, + "required": true }, - "title": "CreateSshKeyRequest", - "additionalProperties": false - }, - "libops.v1.CreateSshKeyResponse": { - "type": "object", - "properties": { - "sshKey": { - "title": "ssh_key", - "$ref": "#/components/schemas/libops.v1.SshKey" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "CreateSshKeyResponse", - "additionalProperties": false - }, - "libops.v1.CreateTaskRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "read:project" + ] }, - "projectId": { - "type": "string", - "title": "project_id" + { + "apiKey": [] + } + ], + "summary": "Get project configuration (organization view) [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] + } + }, + "/libops.v1.ProjectService/GetProjectRuntime": { + "get": { + "description": "Get a runtime host for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.GetProjectRuntime.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "siteId": { - "type": "string", - "title": "site_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "prompt": { - "type": "string", - "title": "prompt" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeRequest" + } + } + }, + "in": "query", + "name": "message" }, - "clientRequestId": { - "type": "string", - "title": "client_request_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "metadata": { - "title": "metadata", - "$ref": "#/components/schemas/google.protobuf.Struct" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "agentModel": { - "type": "string", - "title": "agent_model" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "harness": { - "title": "harness", - "$ref": "#/components/schemas/libops.v1.TaskHarness" - } - }, - "title": "CreateTaskRequest", - "additionalProperties": false - }, - "libops.v1.CreateTaskResponse": { - "type": "object", - "properties": { - "task": { - "title": "task", - "$ref": "#/components/schemas/libops.v1.Task" - } - }, - "title": "CreateTaskResponse", - "additionalProperties": false - }, - "libops.v1.DeleteAccountRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "DeleteAccountRequest", - "additionalProperties": false - }, - "libops.v1.DeleteOrganizationFirewallRuleRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeResponse" + } + } + }, + "description": "Success" }, - "ruleId": { - "type": "string", - "title": "rule_id" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "DeleteOrganizationFirewallRuleRequest", - "additionalProperties": false - }, - "libops.v1.DeleteOrganizationMemberRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "read:project" + ] }, - "accountId": { - "type": "string", - "title": "account_id" - } - }, - "title": "DeleteOrganizationMemberRequest", - "additionalProperties": false - }, - "libops.v1.DeleteOrganizationRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + { + "apiKey": [] } - }, - "title": "DeleteOrganizationRequest", - "additionalProperties": false + ], + "summary": "Get a runtime host for a project. [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] }, - "libops.v1.DeleteOrganizationSecretRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "post": { + "description": "Get a runtime host for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.GetProjectRuntime", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "secretId": { - "type": "string", - "title": "secret_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "DeleteOrganizationSecretRequest", - "additionalProperties": false - }, - "libops.v1.DeleteOrganizationSettingRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeRequest" + } + } }, - "settingId": { - "type": "string", - "title": "setting_id" - } + "required": true }, - "title": "DeleteOrganizationSettingRequest", - "additionalProperties": false - }, - "libops.v1.DeleteProjectFirewallRuleRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectRuntimeResponse" + } + } + }, + "description": "Success" }, - "ruleId": { - "type": "string", - "title": "rule_id" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "DeleteProjectFirewallRuleRequest", - "additionalProperties": false - }, - "libops.v1.DeleteProjectMemberRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "security": [ + { + "oauth2": [ + "read:project" + ] }, - "accountId": { - "type": "string", - "title": "account_id" + { + "apiKey": [] } - }, - "title": "DeleteProjectMemberRequest", - "additionalProperties": false - }, - "libops.v1.DeleteProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "summary": "Get a runtime host for a project. [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] + } + }, + "/libops.v1.ProjectService/ListProjectRuntimes": { + "get": { + "description": "List runtime hosts for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.ListProjectRuntimes.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "projectId": { - "type": "string", - "title": "project_id" - } - }, - "title": "DeleteProjectRequest", - "additionalProperties": false - }, - "libops.v1.DeleteProjectSecretRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "secretId": { - "type": "string", - "title": "secret_id" - } - }, - "title": "DeleteProjectSecretRequest", - "additionalProperties": false - }, - "libops.v1.DeleteProjectSettingRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesRequest" + } + } + }, + "in": "query", + "name": "message" }, - "settingId": { - "type": "string", - "title": "setting_id" - } - }, - "title": "DeleteProjectSettingRequest", - "additionalProperties": false - }, - "libops.v1.DeleteSiteDomainRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "domain": { - "type": "string", - "title": "domain" - } - }, - "title": "DeleteSiteDomainRequest", - "additionalProperties": false - }, - "libops.v1.DeleteSiteFirewallRuleRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "ruleId": { - "type": "string", - "title": "rule_id" - } - }, - "title": "DeleteSiteFirewallRuleRequest", - "additionalProperties": false - }, - "libops.v1.DeleteSiteMemberRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "accountId": { - "type": "string", - "title": "account_id" - } - }, - "title": "DeleteSiteMemberRequest", - "additionalProperties": false - }, - "libops.v1.DeleteSiteRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "DeleteSiteRequest", - "additionalProperties": false - }, - "libops.v1.DeleteSiteSecretRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesResponse" + } + } + }, + "description": "Success" }, - "secretId": { - "type": "string", - "title": "secret_id" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "DeleteSiteSecretRequest", - "additionalProperties": false - }, - "libops.v1.DeleteSiteSettingRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + "security": [ + { + "oauth2": [ + "read:project" + ] }, - "settingId": { - "type": "string", - "title": "setting_id" + { + "apiKey": [] } - }, - "title": "DeleteSiteSettingRequest", - "additionalProperties": false + ], + "summary": "List runtime hosts for a project. [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] }, - "libops.v1.DeleteSshKeyRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" + "post": { + "description": "List runtime hosts for a project.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.ListProjectRuntimes", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "keyId": { - "type": "string", - "title": "key_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "DeleteSshKeyRequest", - "additionalProperties": false - }, - "libops.v1.DeploySiteRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesRequest" + } + } }, - "gitRef": { - "type": "string", - "title": "git_ref", - "description": "Branch, tag, or commit to deploy", - "nullable": true - } + "required": true }, - "title": "DeploySiteRequest", - "additionalProperties": false - }, - "libops.v1.DeploySiteResponse": { - "type": "object", - "properties": { - "deploymentId": { - "type": "string", - "title": "deployment_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectRuntimesResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.SiteStatus" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "DeploySiteResponse", - "additionalProperties": false - }, - "libops.v1.EventEnvelope": { - "type": "object", - "properties": { - "eventId": { - "type": "string", - "title": "event_id", - "description": "Event ID is the CloudEvents id." - }, - "eventType": { - "type": "string", - "title": "event_type", - "description": "Event type is the CloudEvents type." - }, - "eventSource": { - "type": "string", - "title": "event_source", - "description": "Event source is the CloudEvents source." - }, - "eventSubject": { - "type": "string", - "title": "event_subject", - "description": "Event subject identifies the affected resource, when present." - }, - "eventData": { - "type": "string", - "title": "event_data", - "format": "byte", - "description": "Event data contains the serialized event payload." - }, - "contentType": { - "type": "string", - "title": "content_type", - "description": "Content type describes event_data." - }, - "organizationId": { - "type": [ - "integer", - "string" - ], - "title": "organization_id", - "format": "int64", - "description": "Organization ID is the internal organization row ID." - }, - "projectId": { - "type": [ - "integer", - "string" - ], - "title": "project_id", - "format": "int64", - "description": "Project ID is the internal project row ID, when scoped to a project.", - "nullable": true - }, - "siteId": { - "type": [ - "integer", - "string" - ], - "title": "site_id", - "format": "int64", - "description": "Site ID is the internal site row ID, when scoped to a site.", - "nullable": true - }, - "createdAt": { - "title": "created_at", - "description": "Created at records when the event was queued.", - "$ref": "#/components/schemas/google.protobuf.Timestamp" - }, - "requestId": { - "type": "string", - "title": "request_id", - "description": "Request ID links the event to the originating API request." + "security": [ + { + "oauth2": [ + "read:project" + ] }, - "traceparent": { - "type": "string", - "title": "traceparent", - "description": "Traceparent carries the W3C trace context across queue and Pub/Sub hops." + { + "apiKey": [] } - }, - "title": "EventEnvelope", - "additionalProperties": false, - "description": "EventEnvelope is the shared control-plane event contract stored in event_queue\n and consumed by workers." - }, - "libops.v1.FirewallRule": { - "type": "object", - "properties": { - "protocol": { - "type": "string", - "title": "protocol", - "description": "tcp, udp, icmp, etc." + ], + "summary": "List runtime hosts for a project. [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] + } + }, + "/libops.v1.ProjectService/ListProjectSites": { + "get": { + "description": "List sites for a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.ListProjectSites.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "port": { - "type": "integer", - "title": "port", - "format": "int32", - "description": "port number (0 if not applicable)" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "source": { - "type": "string", - "title": "source", - "description": "source CIDR or IP" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSitesRequest" + } + } + }, + "in": "query", + "name": "message" }, - "action": { - "type": "string", - "title": "action", - "description": "accept, deny, drop, reject" - } - }, - "title": "FirewallRule", - "additionalProperties": false - }, - "libops.v1.FirewallRuleType": { - "type": "string", - "title": "FirewallRuleType", - "enum": [ - "FIREWALL_RULE_TYPE_UNSPECIFIED", - "FIREWALL_RULE_TYPE_HTTPS_ALLOWED", - "FIREWALL_RULE_TYPE_SSH_ALLOWED", - "FIREWALL_RULE_TYPE_BLOCKED" - ] - }, - "libops.v1.GenerateTerraformVarsRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "description": "Organization public UUID", - "nullable": true + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "projectId": { - "type": "string", - "title": "project_id", - "description": "Project public UUID", - "nullable": true + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site public UUID", - "nullable": true - } - }, - "title": "GenerateTerraformVarsRequest", - "additionalProperties": false - }, - "libops.v1.GenerateTerraformVarsResponse": { - "type": "object", - "properties": { - "tfvarsJson": { - "type": "string", - "title": "tfvars_json", - "description": "JSON-encoded terraform variables" - } - }, - "title": "GenerateTerraformVarsResponse", - "additionalProperties": false - }, - "libops.v1.GetAccountByEmailRequest": { - "type": "object", - "properties": { - "email": { - "type": "string", - "title": "email" - } - }, - "title": "GetAccountByEmailRequest", - "additionalProperties": false - }, - "libops.v1.GetAccountByEmailResponse": { - "type": "object", - "properties": { - "account": { - "title": "account", - "$ref": "#/components/schemas/libops.v1.OrganizationAccount" - } - }, - "title": "GetAccountByEmailResponse", - "additionalProperties": false - }, - "libops.v1.GetAccountRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" - } - }, - "title": "GetAccountRequest", - "additionalProperties": false - }, - "libops.v1.GetAccountResponse": { - "type": "object", - "properties": { - "account": { - "title": "account", - "$ref": "#/components/schemas/libops.v1.Account" - } - }, - "title": "GetAccountResponse", - "additionalProperties": false - }, - "libops.v1.GetBlobRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site public ID" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "blobType": { - "type": "string", - "title": "blob_type", - "description": "\"ssh_keys\", \"secrets\", \"firewall\"" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "GetBlobRequest", - "additionalProperties": false - }, - "libops.v1.GetBlobResponse": { - "type": "object", - "properties": { - "data": { - "type": "string", - "title": "data", - "format": "byte", - "description": "Blob content (JSON)" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSitesResponse" + } + } + }, + "description": "Success" }, - "contentType": { - "type": "string", - "title": "content_type", - "description": "\"application/json\"" - } - }, - "title": "GetBlobResponse", - "additionalProperties": false - }, - "libops.v1.GetOperationRequest": { - "type": "object", - "properties": { - "operationId": { - "type": "string", - "title": "operation_id" - } - }, - "title": "GetOperationRequest", - "additionalProperties": false - }, - "libops.v1.GetOperationResponse": { - "type": "object", - "properties": { - "operation": { - "title": "operation", - "$ref": "#/components/schemas/libops.v1.Operation" - } - }, - "title": "GetOperationResponse", - "additionalProperties": false - }, - "libops.v1.GetOrganizationRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - } - }, - "title": "GetOrganizationRequest", - "additionalProperties": false - }, - "libops.v1.GetOrganizationResponse": { - "type": "object", - "properties": { - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.common.FolderConfig" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "GetOrganizationResponse", - "additionalProperties": false - }, - "libops.v1.GetOrganizationSecretRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "read:project" + ] }, - "secretId": { - "type": "string", - "title": "secret_id" - } - }, - "title": "GetOrganizationSecretRequest", - "additionalProperties": false - }, - "libops.v1.GetOrganizationSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.OrganizationSecret" + { + "apiKey": [] } - }, - "title": "GetOrganizationSecretResponse", - "additionalProperties": false + ], + "summary": "List sites for a project [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] }, - "libops.v1.GetOrganizationSettingRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "post": { + "description": "List sites for a project\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:project` |\n| Project | `read:project` |\n", + "operationId": "libops.v1.ProjectService.ListProjectSites", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "settingId": { - "type": "string", - "title": "setting_id" - } - }, - "title": "GetOrganizationSettingRequest", - "additionalProperties": false - }, - "libops.v1.GetOrganizationSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.OrganizationSetting" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "GetOrganizationSettingResponse", - "additionalProperties": false - }, - "libops.v1.GetProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSitesRequest" + } + } }, - "projectId": { - "type": "string", - "title": "project_id" - } - }, - "title": "GetProjectRequest", - "additionalProperties": false - }, - "libops.v1.GetProjectResponse": { - "type": "object", - "properties": { - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" - } + "required": true }, - "title": "GetProjectResponse", - "additionalProperties": false - }, - "libops.v1.GetProjectRuntimeRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSitesResponse" + } + } + }, + "description": "Success" }, - "runtimeId": { - "type": "string", - "title": "runtime_id" - } - }, - "title": "GetProjectRuntimeRequest", - "additionalProperties": false - }, - "libops.v1.GetProjectRuntimeResponse": { - "type": "object", - "properties": { - "runtime": { - "title": "runtime", - "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "GetProjectRuntimeResponse", - "additionalProperties": false - }, - "libops.v1.GetProjectSecretRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "security": [ + { + "oauth2": [ + "read:project" + ] }, - "secretId": { - "type": "string", - "title": "secret_id" - } - }, - "title": "GetProjectSecretRequest", - "additionalProperties": false - }, - "libops.v1.GetProjectSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.ProjectSecret" + { + "apiKey": [] } - }, - "title": "GetProjectSecretResponse", - "additionalProperties": false - }, - "libops.v1.GetProjectSettingRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + ], + "summary": "List sites for a project [Requires: read:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read:project" + ] + } + }, + "/libops.v1.ProjectService/ListProjects": { + "get": { + "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", + "operationId": "libops.v1.ProjectService.ListProjects.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "settingId": { - "type": "string", - "title": "setting_id" - } - }, - "title": "GetProjectSettingRequest", - "additionalProperties": false - }, - "libops.v1.GetProjectSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.ProjectSetting" - } - }, - "title": "GetProjectSettingResponse", - "additionalProperties": false - }, - "libops.v1.GetReconciliationRunRequest": { - "type": "object", - "properties": { - "runId": { - "type": "string", - "title": "run_id" - } - }, - "title": "GetReconciliationRunRequest", - "additionalProperties": false - }, - "libops.v1.GetReconciliationRunResponse": { - "type": "object", - "properties": { - "runId": { - "type": "string", - "title": "run_id" - }, - "runType": { - "type": "string", - "title": "run_type", - "description": "terraform or reconciliation" - }, - "reconciliationType": { - "type": "string", - "title": "reconciliation_type", - "description": "ssh_keys, secrets, firewall, general", - "nullable": true - }, - "modules": { - "type": "array", - "items": { - "type": "string" - }, - "title": "modules", - "description": "For terraform runs" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "targetSiteIds": { - "type": "array", - "items": { - "type": [ - "integer", - "string" - ], - "format": "int64" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectsRequest" + } + } }, - "title": "target_site_ids", - "description": "For reconciliation runs" + "in": "query", + "name": "message" }, - "eventIds": { - "type": "array", - "items": { - "type": "string" - }, - "title": "event_ids" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "organizationId": { - "type": [ - "integer", - "string" - ], - "title": "organization_id", - "format": "int64", - "nullable": true + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "projectId": { - "type": [ - "integer", - "string" - ], - "title": "project_id", - "format": "int64", - "nullable": true + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "siteId": { - "type": [ - "integer", - "string" - ], - "title": "site_id", - "format": "int64", - "nullable": true + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectsResponse" + } + } + }, + "description": "Success" }, - "status": { - "type": "string", - "title": "status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "GetReconciliationRunResponse", - "additionalProperties": false - }, - "libops.v1.GetSiteFirewallRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site public ID" + "security": [ + { + "oauth2": [ + "read:organization" + ] + }, + { + "apiKey": [] } - }, - "title": "GetSiteFirewallRequest", - "additionalProperties": false + ], + "summary": "List projects for a organization [Requires: read:organization]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:read", + "x-scopes": [ + "read:organization" + ] }, - "libops.v1.GetSiteFirewallResponse": { - "type": "object", - "properties": { - "rules": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.FirewallRule" - }, - "title": "rules" + "post": { + "description": "List projects for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:organization` |\n", + "operationId": "libops.v1.ProjectService.ListProjects", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectsRequest" + } + } + }, + "required": true }, - "title": "GetSiteFirewallResponse", - "additionalProperties": false - }, - "libops.v1.GetSiteRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectsResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "GetSiteRequest", - "additionalProperties": false - }, - "libops.v1.GetSiteResponse": { - "type": "object", - "properties": { - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.common.SiteConfig" + "security": [ + { + "oauth2": [ + "read:organization" + ] + }, + { + "apiKey": [] } - }, - "title": "GetSiteResponse", - "additionalProperties": false - }, - "libops.v1.GetSiteSSHKeysRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site public ID" + ], + "summary": "List projects for a organization [Requires: read:organization]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:read", + "x-scopes": [ + "read:organization" + ] + } + }, + "/libops.v1.ProjectService/UpdateProject": { + "post": { + "description": "Update project configuration (organization-editable fields only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:project` |\n| Project | `write:project` |\n", + "operationId": "libops.v1.ProjectService.UpdateProject", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectRequest" + } + } + }, + "required": true }, - "title": "GetSiteSSHKeysRequest", - "additionalProperties": false - }, - "libops.v1.GetSiteSSHKeysResponse": { - "type": "object", - "properties": { - "keys": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.SSHKey" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } }, - "title": "keys" + "description": "Error" } }, - "title": "GetSiteSSHKeysResponse", - "additionalProperties": false - }, - "libops.v1.GetSiteSecretRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + "security": [ + { + "oauth2": [ + "write:project" + ] + }, + { + "apiKey": [] + } + ], + "summary": "Update project configuration (organization-editable fields only) [Requires: write:project]", + "tags": [ + "libops.v1.ProjectService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "write:project" + ] + } + }, + "/libops.v1.ProjectSettingService/CreateProjectSetting": { + "post": { + "description": "Create a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n", + "operationId": "libops.v1.ProjectSettingService.CreateProjectSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "secretId": { - "type": "string", - "title": "secret_id" - } - }, - "title": "GetSiteSecretRequest", - "additionalProperties": false - }, - "libops.v1.GetSiteSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.SiteSecret" - } - }, - "title": "GetSiteSecretResponse", - "additionalProperties": false - }, - "libops.v1.GetSiteSecretsRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site public ID" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectSettingRequest" + } + } + }, + "required": true }, - "title": "GetSiteSecretsRequest", - "additionalProperties": false - }, - "libops.v1.GetSiteSecretsResponse": { - "type": "object", - "properties": { - "secrets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.Secret" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateProjectSettingResponse" + } + } }, - "title": "secrets" - } - }, - "title": "GetSiteSecretsResponse", - "additionalProperties": false - }, - "libops.v1.GetSiteSettingRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + "description": "Success" }, - "settingId": { - "type": "string", - "title": "setting_id" - } - }, - "title": "GetSiteSettingRequest", - "additionalProperties": false - }, - "libops.v1.GetSiteSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.SiteSetting" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "GetSiteSettingResponse", - "additionalProperties": false - }, - "libops.v1.GetSiteStatusRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + "security": [ + { + "oauth2": [ + "manage_settings" + ] + }, + { + "apiKey": [] } - }, - "title": "GetSiteStatusRequest", - "additionalProperties": false - }, - "libops.v1.GetSiteStatusResponse": { - "type": "object", - "properties": { - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.SiteStatus" + ], + "summary": "Create a project setting [Requires: manage_settings]", + "tags": [ + "libops.v1.ProjectSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_settings" + ] + } + }, + "/libops.v1.ProjectSettingService/DeleteProjectSetting": { + "post": { + "description": "Delete a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n", + "operationId": "libops.v1.ProjectSettingService.DeleteProjectSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteProjectSettingRequest" + } + } + }, + "required": true }, - "title": "GetSiteStatusResponse", - "additionalProperties": false - }, - "libops.v1.GetTaskRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "taskId": { - "type": "string", - "title": "task_id" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "GetTaskRequest", - "additionalProperties": false - }, - "libops.v1.GetTaskResponse": { - "type": "object", - "properties": { - "task": { - "title": "task", - "$ref": "#/components/schemas/libops.v1.Task" + "security": [ + { + "oauth2": [ + "manage_settings" + ] + }, + { + "apiKey": [] } - }, - "title": "GetTaskResponse", - "additionalProperties": false - }, - "libops.v1.ListAccountProjectsRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" + ], + "summary": "Delete a project setting [Requires: manage_settings]", + "tags": [ + "libops.v1.ProjectSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_settings" + ] + } + }, + "/libops.v1.ProjectSettingService/GetProjectSetting": { + "get": { + "description": "Get a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", + "operationId": "libops.v1.ProjectSettingService.GetProjectSetting.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSettingRequest" + } + } + }, + "in": "query", + "name": "message" + }, + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } + }, + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } + }, + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "ListAccountProjectsRequest", - "additionalProperties": false - }, - "libops.v1.ListAccountProjectsResponse": { - "type": "object", - "properties": { - "organizationIds": { - "type": "array", - "items": { - "type": "string" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSettingResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } }, - "title": "organization_ids", - "description": "List of organization IDs the account has access to" - }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "description": "Error" } }, - "title": "ListAccountProjectsResponse", - "additionalProperties": false - }, - "libops.v1.ListAccountRepositoriesRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "read_settings" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "ListAccountRepositoriesRequest", - "additionalProperties": false + ], + "summary": "Get a project setting [Requires: read_settings]", + "tags": [ + "libops.v1.ProjectSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read_settings" + ] }, - "libops.v1.ListAccountRepositoriesResponse": { - "type": "object", - "properties": { - "repositories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.Repository" - }, - "title": "repositories" + "post": { + "description": "Get a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", + "operationId": "libops.v1.ProjectSettingService.GetProjectSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "ListAccountRepositoriesResponse", - "additionalProperties": false - }, - "libops.v1.ListAccountsRequest": { - "type": "object", - "properties": { - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" - }, - "pageToken": { - "type": "string", - "title": "page_token" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSettingRequest" + } + } }, - "status": { - "title": "status", - "description": "Filter by status", - "nullable": true, - "$ref": "#/components/schemas/libops.v1.AccountStatus" - } + "required": true }, - "title": "ListAccountsRequest", - "additionalProperties": false - }, - "libops.v1.ListAccountsResponse": { - "type": "object", - "properties": { - "accounts": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.Account" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetProjectSettingResponse" + } + } }, - "title": "accounts" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListAccountsResponse", - "additionalProperties": false - }, - "libops.v1.ListApiKeysRequest": { - "type": "object", - "properties": { - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "read_settings" + ] }, - "pageToken": { - "type": "string", - "title": "page_token", - "description": "NO account_id filter - always lists the authenticated user's keys" + { + "apiKey": [] } - }, - "title": "ListApiKeysRequest", - "additionalProperties": false - }, - "libops.v1.ListApiKeysResponse": { - "type": "object", - "properties": { - "apiKeys": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.ApiKeyMetadata" + ], + "summary": "Get a project setting [Requires: read_settings]", + "tags": [ + "libops.v1.ProjectSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read_settings" + ] + } + }, + "/libops.v1.ProjectSettingService/ListProjectSettings": { + "get": { + "description": "List project settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", + "operationId": "libops.v1.ProjectSettingService.ListProjectSettings.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSettingsRequest" + } + } }, - "title": "api_keys" + "in": "query", + "name": "message" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" - } - }, - "title": "ListApiKeysResponse", - "additionalProperties": false - }, - "libops.v1.ListOrganizationFirewallRulesRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "ListOrganizationFirewallRulesRequest", - "additionalProperties": false - }, - "libops.v1.ListOrganizationFirewallRulesResponse": { - "type": "object", - "properties": { - "rules": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.OrganizationFirewallRule" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSettingsResponse" + } + } }, - "title": "rules" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListOrganizationFirewallRulesResponse", - "additionalProperties": false - }, - "libops.v1.ListOrganizationMembersRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "read_settings" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "List project settings [Requires: read_settings]", + "tags": [ + "libops.v1.ProjectSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read_settings" + ] + }, + "post": { + "description": "List project settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n", + "operationId": "libops.v1.ProjectSettingService.ListProjectSettings", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSettingsRequest" + } + } + }, + "required": true }, - "title": "ListOrganizationMembersRequest", - "additionalProperties": false - }, - "libops.v1.ListOrganizationMembersResponse": { - "type": "object", - "properties": { - "members": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.MemberDetail" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListProjectSettingsResponse" + } + } }, - "title": "members" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListOrganizationMembersResponse", - "additionalProperties": false - }, - "libops.v1.ListOrganizationProjectsRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "read_settings" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "List project settings [Requires: read_settings]", + "tags": [ + "libops.v1.ProjectSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:read", + "x-scopes": [ + "read_settings" + ] + } + }, + "/libops.v1.ProjectSettingService/UpdateProjectSetting": { + "post": { + "description": "Update a project setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n", + "operationId": "libops.v1.ProjectSettingService.UpdateProjectSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectSettingRequest" + } + } + }, + "required": true }, - "title": "ListOrganizationProjectsRequest", - "additionalProperties": false - }, - "libops.v1.ListOrganizationProjectsResponse": { - "type": "object", - "properties": { - "projectIds": { - "type": "array", - "items": { - "type": "string" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateProjectSettingResponse" + } + } }, - "title": "project_ids" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListOrganizationProjectsResponse", - "additionalProperties": false - }, - "libops.v1.ListOrganizationSecretsRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "manage_settings" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "Update a project setting [Requires: manage_settings]", + "tags": [ + "libops.v1.ProjectSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "manage_settings" + ] + } + }, + "/libops.v1.SiteFirewallService/CreateSiteFirewallRule": { + "post": { + "description": "Add firewall rule to a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:firewall` |\n| Project | `write:firewall` |\n| Site | `write:firewall` |\n", + "operationId": "libops.v1.SiteFirewallService.CreateSiteFirewallRule", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteFirewallRuleRequest" + } + } + }, + "required": true }, - "title": "ListOrganizationSecretsRequest", - "additionalProperties": false - }, - "libops.v1.ListOrganizationSecretsResponse": { - "type": "object", - "properties": { - "secrets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.OrganizationSecret" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteFirewallRuleResponse" + } + } }, - "title": "secrets" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListOrganizationSecretsResponse", - "additionalProperties": false - }, - "libops.v1.ListOrganizationSettingsRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "write:firewall" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "Add firewall rule to a specific site [Requires: write:firewall]", + "tags": [ + "libops.v1.SiteFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "write:firewall" + ] + } + }, + "/libops.v1.SiteFirewallService/DeleteSiteFirewallRule": { + "post": { + "description": "Remove a firewall rule from a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:firewall` |\n| Project | `delete:firewall` |\n| Site | `delete:firewall` |\n", + "operationId": "libops.v1.SiteFirewallService.DeleteSiteFirewallRule", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "ListOrganizationSettingsRequest", - "additionalProperties": false - }, - "libops.v1.ListOrganizationSettingsResponse": { - "type": "object", - "properties": { - "settings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.OrganizationSetting" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteSiteFirewallRuleRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } }, - "title": "settings" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListOrganizationSettingsResponse", - "additionalProperties": false - }, - "libops.v1.ListOrganizationsRequest": { - "type": "object", - "properties": { - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "delete:firewall" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "ListOrganizationsRequest", - "additionalProperties": false - }, - "libops.v1.ListOrganizationsResponse": { - "type": "object", - "properties": { - "organizations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.common.FolderConfig" + ], + "summary": "Remove a firewall rule from a specific site [Requires: delete:firewall]", + "tags": [ + "libops.v1.SiteFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "delete:firewall" + ] + } + }, + "/libops.v1.SiteFirewallService/ListSiteFirewallRules": { + "get": { + "description": "List firewall rules applied to a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n| Site | `read:firewall` |\n", + "operationId": "libops.v1.SiteFirewallService.ListSiteFirewallRules.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesRequest" + } + } }, - "title": "organizations" + "in": "query", + "name": "message" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" - } - }, - "title": "ListOrganizationsResponse", - "additionalProperties": false - }, - "libops.v1.ListProjectFirewallRulesRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "ListProjectFirewallRulesRequest", - "additionalProperties": false - }, - "libops.v1.ListProjectFirewallRulesResponse": { - "type": "object", - "properties": { - "rules": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.ProjectFirewallRule" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesResponse" + } + } }, - "title": "rules" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListProjectFirewallRulesResponse", - "additionalProperties": false - }, - "libops.v1.ListProjectMembersRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "security": [ + { + "oauth2": [ + "read:firewall" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "List firewall rules applied to a specific site [Requires: read:firewall]", + "tags": [ + "libops.v1.SiteFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:firewall" + ] + }, + "post": { + "description": "List firewall rules applied to a specific site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:firewall`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:firewall` |\n| Project | `read:firewall` |\n| Site | `read:firewall` |\n", + "operationId": "libops.v1.SiteFirewallService.ListSiteFirewallRules", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesRequest" + } + } + }, + "required": true }, - "title": "ListProjectMembersRequest", - "additionalProperties": false - }, - "libops.v1.ListProjectMembersResponse": { - "type": "object", - "properties": { - "members": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.MemberDetail" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteFirewallRulesResponse" + } + } }, - "title": "members" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListProjectMembersResponse", - "additionalProperties": false - }, - "libops.v1.ListProjectRuntimesRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "security": [ + { + "oauth2": [ + "read:firewall" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "List firewall rules applied to a specific site [Requires: read:firewall]", + "tags": [ + "libops.v1.SiteFirewallService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:firewall" + ] + } + }, + "/libops.v1.SiteMemberService/CreateSiteMember": { + "post": { + "description": "Add a member to a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n| Site | `write:members` |\n", + "operationId": "libops.v1.SiteMemberService.CreateSiteMember", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteMemberRequest" + } + } + }, + "required": true }, - "title": "ListProjectRuntimesRequest", - "additionalProperties": false - }, - "libops.v1.ListProjectRuntimesResponse": { - "type": "object", - "properties": { - "runtimes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeConfig" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteMemberResponse" + } + } }, - "title": "runtimes" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListProjectRuntimesResponse", - "additionalProperties": false - }, - "libops.v1.ListProjectSecretsRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "write:members" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "ListProjectSecretsRequest", - "additionalProperties": false - }, - "libops.v1.ListProjectSecretsResponse": { - "type": "object", - "properties": { - "secrets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.ProjectSecret" - }, - "title": "secrets" + ], + "summary": "Add a member to a site [Requires: write:members]", + "tags": [ + "libops.v1.SiteMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:admin", + "x-scopes": [ + "write:members" + ] + } + }, + "/libops.v1.SiteMemberService/DeleteSiteMember": { + "post": { + "description": "Remove a member from a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:members` |\n| Project | `delete:members` |\n| Site | `delete:members` |\n", + "operationId": "libops.v1.SiteMemberService.DeleteSiteMember", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "ListProjectSecretsResponse", - "additionalProperties": false - }, - "libops.v1.ListProjectSettingsRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteSiteMemberRequest" + } + } }, - "pageToken": { - "type": "string", - "title": "page_token" - } + "required": true }, - "title": "ListProjectSettingsRequest", - "additionalProperties": false - }, - "libops.v1.ListProjectSettingsResponse": { - "type": "object", - "properties": { - "settings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.ProjectSetting" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } }, - "title": "settings" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListProjectSettingsResponse", - "additionalProperties": false - }, - "libops.v1.ListProjectSitesRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "delete:members" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "ListProjectSitesRequest", - "additionalProperties": false - }, - "libops.v1.ListProjectSitesResponse": { - "type": "object", - "properties": { - "siteNames": { - "type": "array", - "items": { - "type": "string" + ], + "summary": "Remove a member from a site [Requires: delete:members]", + "tags": [ + "libops.v1.SiteMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:admin", + "x-scopes": [ + "delete:members" + ] + } + }, + "/libops.v1.SiteMemberService/ListSiteMembers": { + "get": { + "description": "List members of a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n| Site | `read:members` |\n", + "operationId": "libops.v1.SiteMemberService.ListSiteMembers.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteMembersRequest" + } + } }, - "title": "site_names" + "in": "query", + "name": "message" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" - } - }, - "title": "ListProjectSitesResponse", - "additionalProperties": false - }, - "libops.v1.ListProjectsRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "nullable": true + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "ListProjectsRequest", - "additionalProperties": false - }, - "libops.v1.ListProjectsResponse": { - "type": "object", - "properties": { - "projects": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteMembersResponse" + } + } }, - "title": "projects" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListProjectsResponse", - "additionalProperties": false - }, - "libops.v1.ListSiteDomainsRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "read:members" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "ListSiteDomainsRequest", - "additionalProperties": false + ], + "summary": "List members of a site [Requires: read:members]", + "tags": [ + "libops.v1.SiteMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:members" + ] }, - "libops.v1.ListSiteDomainsResponse": { - "type": "object", - "properties": { - "domains": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.common.DomainConfig" - }, - "title": "domains" + "post": { + "description": "List members of a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:members` |\n| Project | `read:members` |\n| Site | `read:members` |\n", + "operationId": "libops.v1.SiteMemberService.ListSiteMembers", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "ListSiteDomainsResponse", - "additionalProperties": false - }, - "libops.v1.ListSiteFirewallRulesRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteMembersRequest" + } + } }, - "pageToken": { - "type": "string", - "title": "page_token" - } + "required": true }, - "title": "ListSiteFirewallRulesRequest", - "additionalProperties": false - }, - "libops.v1.ListSiteFirewallRulesResponse": { - "type": "object", - "properties": { - "rules": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.SiteFirewallRule" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteMembersResponse" + } + } }, - "title": "rules" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListSiteFirewallRulesResponse", - "additionalProperties": false - }, - "libops.v1.ListSiteMembersRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + "security": [ + { + "oauth2": [ + "read:members" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "List members of a site [Requires: read:members]", + "tags": [ + "libops.v1.SiteMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:members" + ] + } + }, + "/libops.v1.SiteMemberService/UpdateSiteMember": { + "post": { + "description": "Update a member's role\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:members`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:members` |\n| Project | `write:members` |\n| Site | `write:members` |\n", + "operationId": "libops.v1.SiteMemberService.UpdateSiteMember", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteMemberRequest" + } + } + }, + "required": true }, - "title": "ListSiteMembersRequest", - "additionalProperties": false - }, - "libops.v1.ListSiteMembersResponse": { - "type": "object", - "properties": { - "members": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.MemberDetail" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteMemberResponse" + } + } }, - "title": "members" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListSiteMembersResponse", - "additionalProperties": false - }, - "libops.v1.ListSiteSecretsRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + "security": [ + { + "oauth2": [ + "write:members" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "Update a member's role [Requires: write:members]", + "tags": [ + "libops.v1.SiteMemberService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:admin", + "x-scopes": [ + "write:members" + ] + } + }, + "/libops.v1.SiteOperationsService/DeploySite": { + "post": { + "description": "Deploy a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |\n", + "operationId": "libops.v1.SiteOperationsService.DeploySite", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeploySiteRequest" + } + } + }, + "required": true }, - "title": "ListSiteSecretsRequest", - "additionalProperties": false - }, - "libops.v1.ListSiteSecretsResponse": { - "type": "object", - "properties": { - "secrets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.SiteSecret" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeploySiteResponse" + } + } }, - "title": "secrets" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListSiteSecretsResponse", - "additionalProperties": false - }, - "libops.v1.ListSiteSettingsRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" - }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + "security": [ + { + "oauth2": [ + "write:site" + ] }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "apiKey": [] } - }, - "title": "ListSiteSettingsRequest", - "additionalProperties": false - }, - "libops.v1.ListSiteSettingsResponse": { - "type": "object", - "properties": { - "settings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.SiteSetting" + ], + "summary": "Deploy a site [Requires: write:site]", + "tags": [ + "libops.v1.SiteOperationsService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "write:site" + ] + } + }, + "/libops.v1.SiteOperationsService/GetSiteStatus": { + "get": { + "description": "Get site deployment status\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", + "operationId": "libops.v1.SiteOperationsService.GetSiteStatus.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + }, + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteStatusRequest" + } + } }, - "title": "settings" + "in": "query", + "name": "message" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" - } - }, - "title": "ListSiteSettingsResponse", - "additionalProperties": false - }, - "libops.v1.ListSitesRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "nullable": true + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "projectId": { - "type": "string", - "title": "project_id", - "nullable": true + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "ListSitesRequest", - "additionalProperties": false - }, - "libops.v1.ListSitesResponse": { - "type": "object", - "properties": { - "sites": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.common.SiteConfig" + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteStatusResponse" + } + } }, - "title": "sites" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListSitesResponse", - "additionalProperties": false - }, - "libops.v1.ListSshKeysRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" + "security": [ + { + "oauth2": [ + "read:site" + ] }, - "pageSize": { - "type": "integer", - "title": "page_size", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "Get site deployment status [Requires: read:site]", + "tags": [ + "libops.v1.SiteOperationsService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] + }, + "post": { + "description": "Get site deployment status\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", + "operationId": "libops.v1.SiteOperationsService.GetSiteStatus", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "pageToken": { - "type": "string", - "title": "page_token" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteStatusRequest" + } + } + }, + "required": true }, - "title": "ListSshKeysRequest", - "additionalProperties": false - }, - "libops.v1.ListSshKeysResponse": { - "type": "object", - "properties": { - "sshKeys": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.SshKey" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteStatusResponse" + } + } }, - "title": "ssh_keys" + "description": "Success" }, - "nextPageToken": { - "type": "string", - "title": "next_page_token" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListSshKeysResponse", - "additionalProperties": false - }, - "libops.v1.ListTasksRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "projectId": { - "type": "string", - "title": "project_id" - }, - "siteId": { - "type": "string", - "title": "site_id" + "security": [ + { + "oauth2": [ + "read:site" + ] }, - "limit": { - "type": "integer", - "title": "limit", - "format": "int32" + { + "apiKey": [] + } + ], + "summary": "Get site deployment status [Requires: read:site]", + "tags": [ + "libops.v1.SiteOperationsService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] + } + }, + "/libops.v1.SiteSecretService/CreateSiteSecret": { + "post": { + "description": "Create a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", + "operationId": "libops.v1.SiteSecretService.CreateSiteSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "offset": { - "type": "integer", - "title": "offset", - "format": "int32" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteSecretRequest" + } + } + }, + "required": true }, - "title": "ListTasksRequest", - "additionalProperties": false - }, - "libops.v1.ListTasksResponse": { - "type": "object", - "properties": { - "tasks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.Task" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteSecretResponse" + } + } }, - "title": "tasks" + "description": "Success" }, - "taskUsage": { - "title": "task_usage", - "$ref": "#/components/schemas/libops.v1.TaskUsageBudget" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ListTasksResponse", - "additionalProperties": false - }, - "libops.v1.MemberDetail": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id", - "description": "Account ID of the member" - }, - "email": { - "type": "string", - "title": "email", - "description": "Member's email" - }, - "name": { - "type": "string", - "title": "name", - "description": "Member's display name" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "role": { - "type": "string", - "title": "role", - "description": "\"owner\", \"developer\", \"read\"" + { + "apiKey": [] + } + ], + "summary": "Create a site secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.SiteSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.SiteSecretService/DeleteSiteSecret": { + "post": { + "description": "Delete a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", + "operationId": "libops.v1.SiteSecretService.DeleteSiteSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "githubUsername": { - "type": "string", - "title": "github_username", - "description": "GitHub username", - "nullable": true + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteSiteSecretRequest" + } + } }, - "status": { - "title": "status", - "description": "Member status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "memberId": { - "type": "string", - "title": "member_id", - "description": "Member ID (public_id of the membership)" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "MemberDetail", - "additionalProperties": false - }, - "libops.v1.Operation": { - "type": "object", - "properties": { - "operationId": { - "type": "string", - "title": "operation_id" - }, - "requestId": { - "type": "string", - "title": "request_id" - }, - "operationType": { - "type": "string", - "title": "operation_type" - }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.OperationStatus" - }, - "eventCount": { - "type": [ - "integer", - "string" - ], - "title": "event_count", - "format": "int64" - }, - "eventCompletedCount": { - "type": [ - "integer", - "string" - ], - "title": "event_completed_count", - "format": "int64" - }, - "eventFailedCount": { - "type": [ - "integer", - "string" - ], - "title": "event_failed_count", - "format": "int64" - }, - "publishCount": { - "type": [ - "integer", - "string" - ], - "title": "publish_count", - "format": "int64" - }, - "publishCompletedCount": { - "type": [ - "integer", - "string" - ], - "title": "publish_completed_count", - "format": "int64" - }, - "publishFailedCount": { - "type": [ - "integer", - "string" - ], - "title": "publish_failed_count", - "format": "int64" - }, - "reconciliationCount": { - "type": [ - "integer", - "string" - ], - "title": "reconciliation_count", - "format": "int64" - }, - "reconciliationCompletedCount": { - "type": [ - "integer", - "string" - ], - "title": "reconciliation_completed_count", - "format": "int64" - }, - "reconciliationFailedCount": { - "type": [ - "integer", - "string" - ], - "title": "reconciliation_failed_count", - "format": "int64" - }, - "errorMessage": { - "type": "string", - "title": "error_message" - }, - "createdAt": { - "title": "created_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" - }, - "updatedAt": { - "title": "updated_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "completedAt": { - "title": "completed_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + { + "apiKey": [] } - }, - "title": "Operation", - "additionalProperties": false - }, - "libops.v1.OperationStatus": { - "type": "string", - "title": "OperationStatus", - "enum": [ - "OPERATION_STATUS_UNSPECIFIED", - "OPERATION_STATUS_RUNNING", - "OPERATION_STATUS_SUCCEEDED", - "OPERATION_STATUS_FAILED", - "OPERATION_STATUS_CANCELED" + ], + "summary": "Delete a site secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.SiteSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_secrets" ] - }, - "libops.v1.OrganizationAccount": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id", - "description": "Unique account identifier (UUID)" - }, - "email": { - "type": "string", - "title": "email", - "description": "User's email address" - }, - "name": { - "type": "string", - "title": "name", - "description": "Display name" + } + }, + "/libops.v1.SiteSecretService/GetSiteSecret": { + "get": { + "description": "Get a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", + "operationId": "libops.v1.SiteSecretService.GetSiteSecret.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "authMethod": { - "title": "auth_method", - "description": "How the user authenticates", - "$ref": "#/components/schemas/libops.v1.common.AuthMethod" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "verified": { - "type": "boolean", - "title": "verified", - "description": "Email verification status" - } - }, - "title": "OrganizationAccount", - "additionalProperties": false - }, - "libops.v1.OrganizationFirewallRule": { - "type": "object", - "properties": { - "ruleId": { - "type": "string", - "title": "rule_id", - "description": "Unique rule identifier" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSecretRequest" + } + } + }, + "in": "query", + "name": "message" }, - "organizationId": { - "type": "string", - "title": "organization_id", - "description": "Organization this rule applies to" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "ruleType": { - "title": "rule_type", - "description": "Type of rule", - "$ref": "#/components/schemas/libops.v1.FirewallRuleType" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "cidr": { - "type": "string", - "title": "cidr", - "description": "CIDR block (e.g., \"203.0.113.0/24\")" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "name": { - "type": "string", - "title": "name", - "description": "Human-readable name for the rule" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSecretResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "description": "Rule status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "OrganizationFirewallRule", - "additionalProperties": false - }, - "libops.v1.OrganizationSecret": { - "type": "object", - "properties": { - "secretId": { - "type": "string", - "title": "secret_id", - "description": "UUID" - }, - "organizationId": { - "type": "string", - "title": "organization_id", - "description": "UUID" - }, - "name": { - "type": "string", - "title": "name", - "description": "Environment variable name (e.g., DATABASE_URL)" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" + { + "apiKey": [] } - }, - "title": "OrganizationSecret", - "additionalProperties": false + ], + "summary": "Get a site secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.SiteSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_secrets" + ] }, - "libops.v1.OrganizationSetting": { - "type": "object", - "properties": { - "settingId": { - "type": "string", - "title": "setting_id", - "description": "UUID" + "post": { + "description": "Get a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", + "operationId": "libops.v1.SiteSecretService.GetSiteSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "organizationId": { - "type": "string", - "title": "organization_id", - "description": "UUID" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSecretRequest" + } + } }, - "key": { - "type": "string", - "title": "key", - "description": "e.g., \"max_projects\"" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSecretResponse" + } + } + }, + "description": "Success" }, - "value": { - "type": "string", - "title": "value", - "description": "Stored as string" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" + } + }, + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "editable": { - "type": "boolean", - "title": "editable", - "description": "Can users modify this?" + { + "apiKey": [] + } + ], + "summary": "Get a site secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.SiteSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.SiteSecretService/ListSiteSecrets": { + "get": { + "description": "List a site's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", + "operationId": "libops.v1.SiteSecretService.ListSiteSecrets.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "description": { - "type": "string", - "title": "description", - "description": "Optional description" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" - } - }, - "title": "OrganizationSetting", - "additionalProperties": false - }, - "libops.v1.ProjectFirewallRule": { - "type": "object", - "properties": { - "ruleId": { - "type": "string", - "title": "rule_id", - "description": "Unique rule identifier" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSecretsRequest" + } + } + }, + "in": "query", + "name": "message" }, - "projectId": { - "type": "string", - "title": "project_id", - "description": "Project this rule applies to" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "ruleType": { - "title": "rule_type", - "description": "Type of rule", - "$ref": "#/components/schemas/libops.v1.FirewallRuleType" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "cidr": { - "type": "string", - "title": "cidr", - "description": "CIDR block" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "name": { - "type": "string", - "title": "name", - "description": "Human-readable name" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSecretsResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "description": "Rule status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ProjectFirewallRule", - "additionalProperties": false - }, - "libops.v1.ProjectSecret": { - "type": "object", - "properties": { - "secretId": { - "type": "string", - "title": "secret_id", - "description": "UUID" - }, - "projectId": { - "type": "string", - "title": "project_id", - "description": "UUID" - }, - "name": { - "type": "string", - "title": "name", - "description": "Environment variable name" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" + { + "apiKey": [] } - }, - "title": "ProjectSecret", - "additionalProperties": false + ], + "summary": "List a site's secrets [Requires: manage_secrets]", + "tags": [ + "libops.v1.SiteSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_secrets" + ] }, - "libops.v1.ProjectSetting": { - "type": "object", - "properties": { - "settingId": { - "type": "string", - "title": "setting_id", - "description": "UUID" - }, - "projectId": { - "type": "string", - "title": "project_id", - "description": "UUID" - }, - "key": { - "type": "string", - "title": "key", - "description": "e.g., \"php_op_mode\", \"ENV_LOG_LEVEL\"" - }, - "value": { - "type": "string", - "title": "value" + "post": { + "description": "List a site's secrets\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", + "operationId": "libops.v1.SiteSecretService.ListSiteSecrets", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "editable": { - "type": "boolean", - "title": "editable" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSecretsRequest" + } + } }, - "description": { - "type": "string", - "title": "description" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSecretsResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ProjectSetting", - "additionalProperties": false - }, - "libops.v1.Repository": { - "type": "object", - "properties": { - "repoName": { - "type": "string", - "title": "repo_name" - }, - "repoUrl": { - "type": "string", - "title": "repo_url" - }, - "organizationId": { - "type": "string", - "title": "organization_id" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "projectId": { - "type": "string", - "title": "project_id" + { + "apiKey": [] } - }, - "title": "Repository", - "additionalProperties": false - }, - "libops.v1.RevokeApiKeyRequest": { - "type": "object", - "properties": { - "apiKeyId": { - "type": "string", - "title": "api_key_id", - "description": "UUID of the key to revoke" + ], + "summary": "List a site's secrets [Requires: manage_secrets]", + "tags": [ + "libops.v1.SiteSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.SiteSecretService/UpdateSiteSecret": { + "post": { + "description": "Update a site secret\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_secrets`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_secrets` |\n| Project | `manage_secrets` |\n| Site | `manage_secrets` |\n", + "operationId": "libops.v1.SiteSecretService.UpdateSiteSecret", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteSecretRequest" + } + } + }, + "required": true }, - "title": "RevokeApiKeyRequest", - "additionalProperties": false - }, - "libops.v1.RevokeApiKeyResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "title": "success" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteSecretResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "RevokeApiKeyResponse", - "additionalProperties": false - }, - "libops.v1.SSHKey": { - "type": "object", - "properties": { - "publicKey": { - "type": "string", - "title": "public_key" - }, - "name": { - "type": "string", - "title": "name" - }, - "fingerprint": { - "type": "string", - "title": "fingerprint" + "security": [ + { + "oauth2": [ + "manage_secrets" + ] }, - "githubUsername": { - "type": "string", - "title": "github_username" + { + "apiKey": [] } - }, - "title": "SSHKey", - "additionalProperties": false - }, - "libops.v1.Secret": { - "type": "object", - "properties": { - "key": { - "type": "string", - "title": "key" + ], + "summary": "Update a site secret [Requires: manage_secrets]", + "tags": [ + "libops.v1.SiteSecretService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_secrets" + ] + } + }, + "/libops.v1.SiteService/CreateSite": { + "post": { + "description": "Create a new site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:project`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:project` |\n| Project | `write:project` |\n", + "operationId": "libops.v1.SiteService.CreateSite", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "value": { - "type": "string", - "title": "value" - } - }, - "title": "Secret", - "additionalProperties": false - }, - "libops.v1.SiteCheckInRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site public ID" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "SiteCheckInRequest", - "additionalProperties": false - }, - "libops.v1.SiteCheckInResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "title": "success" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteRequest" + } + } }, - "message": { - "type": "string", - "title": "message" - } + "required": true }, - "title": "SiteCheckInResponse", - "additionalProperties": false - }, - "libops.v1.SiteFirewallRule": { - "type": "object", - "properties": { - "ruleId": { - "type": "string", - "title": "rule_id", - "description": "Unique rule identifier" - }, - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site this rule applies to" - }, - "ruleType": { - "title": "rule_type", - "description": "Type of rule", - "$ref": "#/components/schemas/libops.v1.FirewallRuleType" - }, - "cidr": { - "type": "string", - "title": "cidr", - "description": "CIDR block" - }, - "name": { - "type": "string", - "title": "name", - "description": "Human-readable name" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "description": "Rule status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "SiteFirewallRule", - "additionalProperties": false - }, - "libops.v1.SiteReconciliationPubSubRequest": { - "type": "object", - "properties": { - "sitePublicId": { - "type": "string", - "title": "site_public_id", - "description": "Site public ID is the target site UUID." - }, - "projectPublicId": { - "type": "string", - "title": "project_public_id", - "description": "Project public ID is the target project's UUID." - }, - "orgPublicId": { - "type": "string", - "title": "org_public_id", - "description": "Organization public ID is the owning organization's UUID." - }, - "controllerUrl": { - "type": "string", - "title": "controller_url", - "description": "Controller URL is the DB-pinned controller endpoint for this site." - }, - "requestType": { - "type": "string", - "title": "request_type", - "description": "Request type selects the controller reconciliation endpoint." - }, - "eventIds": { - "type": "array", - "items": { - "type": "string" - }, - "title": "event_ids", - "description": "Event IDs are the outbox events collapsed into this request." - }, - "timestamp": { - "type": "string", - "title": "timestamp", - "description": "Timestamp is when the request was built." - }, - "deploymentId": { - "type": "string", - "title": "deployment_id", - "description": "Deployment ID identifies the requested deployment, when request_type is deployment." + "security": [ + { + "oauth2": [ + "write:project" + ] }, - "gitRef": { - "type": "string", - "title": "git_ref", - "description": "Git ref is the branch, tag, PR ref, or commit requested for deployment." + { + "apiKey": [] } - }, - "title": "SiteReconciliationPubSubRequest", - "additionalProperties": false, - "description": "SiteReconciliationPubSubRequest asks a customer site controller to reconcile." - }, - "libops.v1.SiteSecret": { - "type": "object", - "properties": { - "secretId": { - "type": "string", - "title": "secret_id", - "description": "UUID" + ], + "summary": "Create a new site [Requires: write:project]", + "tags": [ + "libops.v1.SiteService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "project:write", + "x-scopes": [ + "write:project" + ] + } + }, + "/libops.v1.SiteService/DeleteSite": { + "post": { + "description": "Delete a site\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `delete:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `delete:site` |\n| Project | `delete:site` |\n| Site | `delete:site` |\n", + "operationId": "libops.v1.SiteService.DeleteSite", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "siteId": { - "type": "string", - "title": "site_id", - "description": "UUID" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteSiteRequest" + } + } }, - "name": { - "type": "string", - "title": "name", - "description": "Environment variable name" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "SiteSecret", - "additionalProperties": false - }, - "libops.v1.SiteSetting": { - "type": "object", - "properties": { - "settingId": { - "type": "string", - "title": "setting_id", - "description": "UUID" - }, - "siteId": { - "type": "string", - "title": "site_id", - "description": "UUID" - }, - "key": { - "type": "string", - "title": "key", - "description": "e.g., \"ENV_LOG_LEVEL\" (overrides project)" - }, - "value": { - "type": "string", - "title": "value" - }, - "editable": { - "type": "boolean", - "title": "editable" - }, - "description": { - "type": "string", - "title": "description" + "security": [ + { + "oauth2": [ + "delete:site" + ] }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" + { + "apiKey": [] } - }, - "title": "SiteSetting", - "additionalProperties": false - }, - "libops.v1.SiteStatus": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "summary": "Delete a site [Requires: delete:site]", + "tags": [ + "libops.v1.SiteService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:admin", + "x-scopes": [ + "delete:site" + ] + } + }, + "/libops.v1.SiteService/GetSite": { + "get": { + "description": "Get site configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", + "operationId": "libops.v1.SiteService.GetSite.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "status": { - "type": "string", - "title": "status", - "description": "\"pending\", \"deploying\", \"deployed\", \"failed\"" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "message": { - "type": "string", - "title": "message", - "description": "Status message", - "nullable": true + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteRequest" + } + } + }, + "in": "query", + "name": "message" }, - "deployedAt": { - "type": "string", - "title": "deployed_at", - "description": "Timestamp of last deployment", - "nullable": true - } - }, - "title": "SiteStatus", - "additionalProperties": false - }, - "libops.v1.SshKey": { - "type": "object", - "properties": { - "keyId": { - "type": "string", - "title": "key_id", - "description": "UUID" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "accountId": { - "type": "string", - "title": "account_id", - "description": "UUID of account that owns this key" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "publicKey": { - "type": "string", - "title": "public_key", - "description": "SSH public key content" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "name": { - "type": "string", - "title": "name", - "description": "User-friendly name", - "nullable": true + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteResponse" + } + } + }, + "description": "Success" }, - "fingerprint": { - "type": "string", - "title": "fingerprint", - "description": "Key fingerprint (computed)", - "nullable": true + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "SshKey", - "additionalProperties": false - }, - "libops.v1.StateBlobs": { - "type": "object", - "properties": { - "sshKeysUrl": { - "type": "string", - "title": "ssh_keys_url", - "description": "Signed GCS URL to ssh-keys.json" - }, - "secretsUrl": { - "type": "string", - "title": "secrets_url", - "description": "Signed GCS URL to secrets.json" + "security": [ + { + "oauth2": [ + "read:site" + ] }, - "firewallUrl": { - "type": "string", - "title": "firewall_url", - "description": "Signed GCS URL to firewall.json" + { + "apiKey": [] } - }, - "title": "StateBlobs", - "additionalProperties": false + ], + "summary": "Get site configuration (organization view) [Requires: read:site]", + "tags": [ + "libops.v1.SiteService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] }, - "libops.v1.SyncManifestRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id", - "description": "Site public ID" + "post": { + "description": "Get site configuration (organization view)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:site` |\n| Project | `read:site` |\n| Site | `read:site` |\n", + "operationId": "libops.v1.SiteService.GetSite", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "currentStateHash": { - "type": "string", - "title": "current_state_hash", - "description": "For ETag optimization (304 Not Modified)", - "nullable": true + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteRequest" + } + } + }, + "required": true }, - "title": "SyncManifestRequest", - "additionalProperties": false - }, - "libops.v1.SyncManifestResponse": { - "type": "object", - "properties": { - "stateHash": { - "type": "string", - "title": "state_hash", - "description": "Current state hash for this site" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteResponse" + } + } + }, + "description": "Success" }, - "blobs": { - "title": "blobs", - "description": "Signed URLs to GCS blobs", - "$ref": "#/components/schemas/libops.v1.StateBlobs" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "SyncManifestResponse", - "additionalProperties": false - }, - "libops.v1.Task": { - "type": "object", - "properties": { - "taskId": { - "type": "string", - "title": "task_id" - }, - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "projectId": { - "type": "string", - "title": "project_id" - }, - "siteId": { - "type": "string", - "title": "site_id" + "security": [ + { + "oauth2": [ + "read:site" + ] }, - "prompt": { - "type": "string", - "title": "prompt" + { + "apiKey": [] + } + ], + "summary": "Get site configuration (organization view) [Requires: read:site]", + "tags": [ + "libops.v1.SiteService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read:site" + ] + } + }, + "/libops.v1.SiteService/ListSites": { + "get": { + "description": "List sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:site` |\n", + "operationId": "libops.v1.SiteService.ListSites.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.TaskStatus" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "logs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.TaskLogEntry" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSitesRequest" + } + } }, - "title": "logs" + "in": "query", + "name": "message" }, - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.TaskResult" - }, - "title": "results" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "inputRequest": { - "title": "input_request", - "$ref": "#/components/schemas/libops.v1.TaskInput" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "inputResponse": { - "title": "input_response", - "$ref": "#/components/schemas/libops.v1.TaskInput" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "createdAt": { - "title": "created_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSitesResponse" + } + } + }, + "description": "Success" }, - "updatedAt": { - "title": "updated_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" + } + }, + "security": [ + { + "oauth2": [ + "read:site" + ] }, - "startedAt": { - "title": "started_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + { + "apiKey": [] + } + ], + "summary": "List sites for a organization [Requires: read:site]", + "tags": [ + "libops.v1.SiteService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:read", + "x-scopes": [ + "read:site" + ] + }, + "post": { + "description": "List sites for a organization\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:site` |\n", + "operationId": "libops.v1.SiteService.ListSites", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "completedAt": { - "title": "completed_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSitesRequest" + } + } }, - "messages": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.TaskMessage" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSitesResponse" + } + } }, - "title": "messages" - }, - "agentModel": { - "type": "string", - "title": "agent_model" + "description": "Success" }, - "harness": { - "title": "harness", - "$ref": "#/components/schemas/libops.v1.TaskHarness" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "Task", - "additionalProperties": false - }, - "libops.v1.TaskApiAction": { - "type": "object", - "properties": { - "method": { - "type": "string", - "title": "method" - }, - "path": { - "type": "string", - "title": "path" - }, - "headers": { - "title": "headers", - "$ref": "#/components/schemas/google.protobuf.Struct" - }, - "body": { - "title": "body", - "$ref": "#/components/schemas/google.protobuf.Struct" + "security": [ + { + "oauth2": [ + "read:site" + ] }, - "description": { - "type": "string", - "title": "description" + { + "apiKey": [] } - }, - "title": "TaskApiAction", - "additionalProperties": false - }, - "libops.v1.TaskHarness": { - "type": "string", - "title": "TaskHarness", - "enum": [ - "TASK_HARNESS_UNSPECIFIED", - "TASK_HARNESS_CODEX", - "TASK_HARNESS_CLAUDE", - "TASK_HARNESS_PI", - "TASK_HARNESS_OPENCODE", - "TASK_HARNESS_GEMINI" + ], + "summary": "List sites for a organization [Requires: read:site]", + "tags": [ + "libops.v1.SiteService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:read", + "x-scopes": [ + "read:site" ] - }, - "libops.v1.TaskInput": { - "type": "object", - "properties": { - "message": { - "type": "string", - "title": "message" + } + }, + "/libops.v1.SiteService/UpdateSite": { + "post": { + "description": "Update site configuration (organization-editable fields only)\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:site`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:site` |\n| Project | `write:site` |\n| Site | `write:site` |\n", + "operationId": "libops.v1.SiteService.UpdateSite", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "fields": { - "title": "fields", - "$ref": "#/components/schemas/google.protobuf.Struct" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "TaskInput", - "additionalProperties": false - }, - "libops.v1.TaskLogEntry": { - "type": "object", - "properties": { - "timestamp": { - "title": "timestamp", - "$ref": "#/components/schemas/google.protobuf.Timestamp" - }, - "level": { - "type": "string", - "title": "level" - }, - "message": { - "type": "string", - "title": "message" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteRequest" + } + } }, - "attributes": { - "title": "attributes", - "$ref": "#/components/schemas/google.protobuf.Struct" - } + "required": true }, - "title": "TaskLogEntry", - "additionalProperties": false - }, - "libops.v1.TaskMessage": { - "type": "object", - "properties": { - "role": { - "type": "string", - "title": "role" - }, - "content": { - "type": "string", - "title": "content" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteResponse" + } + } + }, + "description": "Success" }, - "createdAt": { - "title": "created_at", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "TaskMessage", - "additionalProperties": false - }, - "libops.v1.TaskResult": { - "type": "object", - "properties": { - "type": { - "title": "type", - "$ref": "#/components/schemas/libops.v1.TaskResultType" - }, - "projectId": { - "type": "string", - "title": "project_id" - }, - "siteId": { - "type": "string", - "title": "site_id" - }, - "prUrl": { - "type": "string", - "title": "pr_url" - }, - "deploymentId": { - "type": "string", - "title": "deployment_id" - }, - "metadata": { - "title": "metadata", - "$ref": "#/components/schemas/google.protobuf.Struct" + "security": [ + { + "oauth2": [ + "write:site" + ] }, - "apiAction": { - "title": "api_action", - "$ref": "#/components/schemas/libops.v1.TaskApiAction" + { + "apiKey": [] } - }, - "title": "TaskResult", - "additionalProperties": false - }, - "libops.v1.TaskResultType": { - "type": "string", - "title": "TaskResultType", - "enum": [ - "TASK_RESULT_UNSPECIFIED", - "TASK_RESULT_PROJECT_CREATED", - "TASK_RESULT_PR_CREATED", - "TASK_RESULT_DEPLOYMENT", - "TASK_RESULT_API_ACTION" - ] - }, - "libops.v1.TaskStatus": { - "type": "string", - "title": "TaskStatus", - "enum": [ - "TASK_STATUS_UNSPECIFIED", - "TASK_STATUS_QUEUED", - "TASK_STATUS_RUNNING", - "TASK_STATUS_NEEDS_INPUT", - "TASK_STATUS_FAILED", - "TASK_STATUS_COMPLETED", - "TASK_STATUS_CANCELED" + ], + "summary": "Update site configuration (organization-editable fields only) [Requires: write:site]", + "tags": [ + "libops.v1.SiteService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "write:site" ] - }, - "libops.v1.TaskUsageBudget": { - "type": "object", - "properties": { - "metricKey": { - "type": "string", - "title": "metric_key" - }, - "period": { - "type": "string", - "title": "period" - }, - "used": { - "type": [ - "integer", - "string" - ], - "title": "used", - "format": "int64" - }, - "limit": { - "type": [ - "integer", - "string" - ], - "title": "limit", - "format": "int64" - }, - "remaining": { - "type": [ - "integer", - "string" - ], - "title": "remaining", - "format": "int64" - }, - "periodStart": { - "title": "period_start", - "$ref": "#/components/schemas/google.protobuf.Timestamp" - }, - "periodEnd": { - "title": "period_end", - "$ref": "#/components/schemas/google.protobuf.Timestamp" + } + }, + "/libops.v1.SiteSettingService/CreateSiteSetting": { + "post": { + "description": "Create a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n| Site | `manage_settings` |\n", + "operationId": "libops.v1.SiteSettingService.CreateSiteSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "source": { - "type": "string", - "title": "source" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteSettingRequest" + } + } + }, + "required": true }, - "title": "TaskUsageBudget", - "additionalProperties": false - }, - "libops.v1.TerraformReconciliationRequested": { - "type": "object", - "properties": { - "resourceType": { - "type": "string", - "title": "resource_type", - "description": "Resource type is organization, project, site, member, firewall, or cadence." - }, - "resourcePublicId": { - "type": "string", - "title": "resource_public_id", - "description": "Resource public ID is the UUID of the requested resource when one exists." - }, - "reason": { - "type": "string", - "title": "reason", - "description": "Reason explains the convergence finding that requested the run." - }, - "cadenceKey": { - "type": "string", - "title": "cadence_key", - "description": "Cadence key makes automatic repair idempotent within a time bucket." - }, - "requestedAt": { - "title": "requested_at", - "description": "Requested at records when the convergence check produced this event.", - "$ref": "#/components/schemas/google.protobuf.Timestamp" - }, - "modules": { - "type": "array", - "items": { - "type": "string" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSiteSettingResponse" + } + } }, - "title": "modules", - "description": "Modules is advisory; the event router derives authoritative modules from scope." - } - }, - "title": "TerraformReconciliationRequested", - "additionalProperties": false, - "description": "TerraformReconciliationRequested asks the control plane to schedule a\n Terraform pass for the current database state of a resource scope." - }, - "libops.v1.UpdateAccountRequest": { - "type": "object", - "properties": { - "accountId": { - "type": "string", - "title": "account_id" - }, - "name": { - "type": "string", - "title": "name", - "nullable": true - }, - "githubUsername": { - "type": "string", - "title": "github_username", - "nullable": true + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" - } - }, - "title": "UpdateAccountRequest", - "additionalProperties": false - }, - "libops.v1.UpdateAccountResponse": { - "type": "object", - "properties": { - "account": { - "title": "account", - "$ref": "#/components/schemas/libops.v1.Account" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateAccountResponse", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationMemberRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" - }, - "accountId": { - "type": "string", - "title": "account_id" - }, - "role": { - "type": "string", - "title": "role", - "description": "New role" + "security": [ + { + "oauth2": [ + "manage_settings" + ] }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + { + "apiKey": [] } - }, - "title": "UpdateOrganizationMemberRequest", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationMemberResponse": { - "type": "object", - "properties": { - "member": { - "title": "member", - "$ref": "#/components/schemas/libops.v1.MemberDetail" + ], + "summary": "Create a site setting [Requires: manage_settings]", + "tags": [ + "libops.v1.SiteSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_settings" + ] + } + }, + "/libops.v1.SiteSettingService/DeleteSiteSetting": { + "post": { + "description": "Delete a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n| Site | `manage_settings` |\n", + "operationId": "libops.v1.SiteSettingService.DeleteSiteSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "UpdateOrganizationMemberResponse", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteSiteSettingRequest" + } + } }, - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.common.FolderConfig" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateOrganizationRequest", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationResponse": { - "type": "object", - "properties": { - "folder": { - "title": "folder", - "$ref": "#/components/schemas/libops.v1.common.FolderConfig" + "security": [ + { + "oauth2": [ + "manage_settings" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateOrganizationResponse", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationSecretRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "summary": "Delete a site setting [Requires: manage_settings]", + "tags": [ + "libops.v1.SiteSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_settings" + ] + } + }, + "/libops.v1.SiteSettingService/GetSiteSetting": { + "get": { + "description": "Get a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", + "operationId": "libops.v1.SiteSettingService.GetSiteSetting.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "secretId": { - "type": "string", - "title": "secret_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "value": { - "type": "string", - "title": "value", - "description": "Updated secret value", - "nullable": true + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSettingRequest" + } + } + }, + "in": "query", + "name": "message" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" - } - }, - "title": "UpdateOrganizationSecretRequest", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.OrganizationSecret" - } - }, - "title": "UpdateOrganizationSecretResponse", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationSettingRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "settingId": { - "type": "string", - "title": "setting_id" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "value": { - "type": "string", - "title": "value", - "nullable": true + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } + }, + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSettingResponse" + } + } + }, + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateOrganizationSettingRequest", - "additionalProperties": false - }, - "libops.v1.UpdateOrganizationSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.OrganizationSetting" + "security": [ + { + "oauth2": [ + "read_settings" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateOrganizationSettingResponse", - "additionalProperties": false + ], + "summary": "Get a site setting [Requires: read_settings]", + "tags": [ + "libops.v1.SiteSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read_settings" + ] }, - "libops.v1.UpdateProjectMemberRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + "post": { + "description": "Get a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", + "operationId": "libops.v1.SiteSettingService.GetSiteSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "accountId": { - "type": "string", - "title": "account_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSettingRequest" + } + } }, - "role": { - "type": "string", - "title": "role", - "description": "New role" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetSiteSettingResponse" + } + } + }, + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateProjectMemberRequest", - "additionalProperties": false - }, - "libops.v1.UpdateProjectMemberResponse": { - "type": "object", - "properties": { - "member": { - "title": "member", - "$ref": "#/components/schemas/libops.v1.MemberDetail" + "security": [ + { + "oauth2": [ + "read_settings" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateProjectMemberResponse", - "additionalProperties": false - }, - "libops.v1.UpdateProjectRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "summary": "Get a site setting [Requires: read_settings]", + "tags": [ + "libops.v1.SiteSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read_settings" + ] + } + }, + "/libops.v1.SiteSettingService/ListSiteSettings": { + "get": { + "description": "List site settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", + "operationId": "libops.v1.SiteSettingService.ListSiteSettings.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "projectId": { - "type": "string", - "title": "project_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSettingsRequest" + } + } + }, + "in": "query", + "name": "message" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" - } - }, - "title": "UpdateProjectRequest", - "additionalProperties": false - }, - "libops.v1.UpdateProjectResponse": { - "type": "object", - "properties": { - "project": { - "title": "project", - "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" - } - }, - "title": "UpdateProjectResponse", - "additionalProperties": false - }, - "libops.v1.UpdateProjectSecretRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "secretId": { - "type": "string", - "title": "secret_id" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "value": { - "type": "string", - "title": "value", - "nullable": true + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" - } - }, - "title": "UpdateProjectSecretRequest", - "additionalProperties": false - }, - "libops.v1.UpdateProjectSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.ProjectSecret" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } } - }, - "title": "UpdateProjectSecretResponse", - "additionalProperties": false - }, - "libops.v1.UpdateProjectSettingRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "string", - "title": "project_id" - }, - "settingId": { - "type": "string", - "title": "setting_id" - }, - "value": { - "type": "string", - "title": "value", - "nullable": true + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSettingsResponse" + } + } + }, + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateProjectSettingRequest", - "additionalProperties": false - }, - "libops.v1.UpdateProjectSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.ProjectSetting" + "security": [ + { + "oauth2": [ + "read_settings" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateProjectSettingResponse", - "additionalProperties": false + ], + "summary": "List site settings [Requires: read_settings]", + "tags": [ + "libops.v1.SiteSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read_settings" + ] }, - "libops.v1.UpdateReconciliationStatusRequest": { - "type": "object", - "properties": { - "runId": { - "type": "string", - "title": "run_id" - }, - "status": { - "type": "string", - "title": "status", - "description": "pending, triggered, running, completed, failed" + "post": { + "description": "List site settings\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read_settings` |\n| Project | `read_settings` |\n| Site | `read_settings` |\n", + "operationId": "libops.v1.SiteSettingService.ListSiteSettings", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "errorMessage": { - "type": "string", - "title": "error_message", - "nullable": true + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSettingsRequest" + } + } + }, + "required": true }, - "title": "UpdateReconciliationStatusRequest", - "additionalProperties": false - }, - "libops.v1.UpdateReconciliationStatusResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean", - "title": "success" + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSiteSettingsResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateReconciliationStatusResponse", - "additionalProperties": false - }, - "libops.v1.UpdateSiteMemberRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" - }, - "accountId": { - "type": "string", - "title": "account_id" - }, - "role": { - "type": "string", - "title": "role", - "description": "New role" + "security": [ + { + "oauth2": [ + "read_settings" + ] }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + { + "apiKey": [] } - }, - "title": "UpdateSiteMemberRequest", - "additionalProperties": false - }, - "libops.v1.UpdateSiteMemberResponse": { - "type": "object", - "properties": { - "member": { - "title": "member", - "$ref": "#/components/schemas/libops.v1.MemberDetail" + ], + "summary": "List site settings [Requires: read_settings]", + "tags": [ + "libops.v1.SiteSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:read", + "x-scopes": [ + "read_settings" + ] + } + }, + "/libops.v1.SiteSettingService/UpdateSiteSetting": { + "post": { + "description": "Update a site setting\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `manage_settings`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `manage_settings` |\n| Project | `manage_settings` |\n| Site | `manage_settings` |\n", + "operationId": "libops.v1.SiteSettingService.UpdateSiteSetting", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "UpdateSiteMemberResponse", - "additionalProperties": false - }, - "libops.v1.UpdateSiteRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteSettingRequest" + } + } }, - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.common.SiteConfig" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateSiteSettingResponse" + } + } + }, + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateSiteRequest", - "additionalProperties": false - }, - "libops.v1.UpdateSiteResponse": { - "type": "object", - "properties": { - "site": { - "title": "site", - "$ref": "#/components/schemas/libops.v1.common.SiteConfig" + "security": [ + { + "oauth2": [ + "manage_settings" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateSiteResponse", - "additionalProperties": false - }, - "libops.v1.UpdateSiteSecretRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "summary": "Update a site setting [Requires: manage_settings]", + "tags": [ + "libops.v1.SiteSettingService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "site:write", + "x-scopes": [ + "manage_settings" + ] + } + }, + "/libops.v1.SshKeyService/CreateSshKey": { + "post": { + "description": "Create SSH key for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", + "operationId": "libops.v1.SshKeyService.CreateSshKey", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "secretId": { - "type": "string", - "title": "secret_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSshKeyRequest" + } + } }, - "value": { - "type": "string", - "title": "value", - "nullable": true + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateSshKeyResponse" + } + } + }, + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateSiteSecretRequest", - "additionalProperties": false - }, - "libops.v1.UpdateSiteSecretResponse": { - "type": "object", - "properties": { - "secret": { - "title": "secret", - "$ref": "#/components/schemas/libops.v1.SiteSecret" + "security": [ + { + "oauth2": [ + "write:user" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateSiteSecretResponse", - "additionalProperties": false - }, - "libops.v1.UpdateSiteSettingRequest": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id" + ], + "summary": "Create SSH key for an account [Requires: write:user]", + "tags": [ + "libops.v1.SshKeyService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:write", + "x-scopes": [ + "write:user" + ] + } + }, + "/libops.v1.SshKeyService/DeleteSshKey": { + "post": { + "description": "Delete SSH key\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `write:user` |\n", + "operationId": "libops.v1.SshKeyService.DeleteSshKey", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "settingId": { - "type": "string", - "title": "setting_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.DeleteSshKeyRequest" + } + } }, - "value": { - "type": "string", - "title": "value", - "nullable": true + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/google.protobuf.Empty" + } + } + }, + "description": "Success" }, - "updateMask": { - "title": "update_mask", - "$ref": "#/components/schemas/google.protobuf.FieldMask" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "UpdateSiteSettingRequest", - "additionalProperties": false - }, - "libops.v1.UpdateSiteSettingResponse": { - "type": "object", - "properties": { - "setting": { - "title": "setting", - "$ref": "#/components/schemas/libops.v1.SiteSetting" + "security": [ + { + "oauth2": [ + "write:user" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateSiteSettingResponse", - "additionalProperties": false - }, - "libops.v1.UpdateTaskRequest": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id" + ], + "summary": "Delete SSH key [Requires: write:user]", + "tags": [ + "libops.v1.SshKeyService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:write", + "x-scopes": [ + "write:user" + ] + } + }, + "/libops.v1.SshKeyService/ListSshKeys": { + "get": { + "description": "List SSH keys for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", + "operationId": "libops.v1.SshKeyService.ListSshKeys.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "taskId": { - "type": "string", - "title": "task_id" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.TaskStatus" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSshKeysRequest" + } + } + }, + "in": "query", + "name": "message" }, - "prompt": { - "type": "string", - "title": "prompt" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "inputRequest": { - "title": "input_request", - "$ref": "#/components/schemas/libops.v1.TaskInput" + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "inputResponse": { - "title": "input_response", - "$ref": "#/components/schemas/libops.v1.TaskInput" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "results": { - "type": "array", - "items": { - "$ref": "#/components/schemas/libops.v1.TaskResult" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSshKeysResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } }, - "title": "results" + "description": "Error" } }, - "title": "UpdateTaskRequest", - "additionalProperties": false - }, - "libops.v1.UpdateTaskResponse": { - "type": "object", - "properties": { - "task": { - "title": "task", - "$ref": "#/components/schemas/libops.v1.Task" + "security": [ + { + "oauth2": [ + "read:user" + ] + }, + { + "apiKey": [] } - }, - "title": "UpdateTaskResponse", - "additionalProperties": false + ], + "summary": "List SSH keys for an account [Requires: read:user]", + "tags": [ + "libops.v1.SshKeyService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:read", + "x-scopes": [ + "read:user" + ] }, - "libops.v1.admin.AdminFolderConfig": { - "type": "object", - "properties": { - "config": { - "title": "config", - "description": "Organization-safe fields (embedded)", - "$ref": "#/components/schemas/libops.v1.common.FolderConfig" - }, - "gcpParent": { - "type": "string", - "title": "gcp_parent", - "description": "Parent resource: folders/{folder_id} or organizations/{org_id}\n Defaults to folder format if not specified" + "post": { + "description": "List SSH keys for an account\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:user`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Account | `read:user` |\n", + "operationId": "libops.v1.SshKeyService.ListSshKeys", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "gcpFolderId": { - "type": "string", - "title": "gcp_folder_id", - "description": "GCP-managed resources (output from orchestration) Set by orchestration after folder creation", - "nullable": true + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSshKeysRequest" + } + } + }, + "required": true }, - "title": "AdminFolderConfig", - "additionalProperties": false, - "description": "AdminFolderConfig extends the organization-facing config with internal fields" - }, - "libops.v1.admin.AdminProjectConfig": { - "type": "object", - "properties": { - "config": { - "title": "config", - "description": "Organization-safe fields (embedded)", - "$ref": "#/components/schemas/libops.v1.common.ProjectConfig" - }, - "billingAccount": { - "type": "string", - "title": "billing_account" - }, - "hostDockerConfig": { - "type": "string", - "title": "host_docker_config", - "description": "Sensitive", - "nullable": true - }, - "gcpProjectId": { - "type": "string", - "title": "gcp_project_id", - "description": "GCP-managed resources (output from orchestration) Set after project creation", - "nullable": true - }, - "gcpProjectNumber": { - "type": "string", - "title": "gcp_project_number", - "description": "Set after project creation", - "nullable": true - }, - "organizationProject": { - "type": "boolean", - "title": "organization_project", - "description": "Flag to identify if this is the organization's libops project (for vault, etc.)" - } - }, - "title": "AdminProjectConfig", - "additionalProperties": false, - "description": "AdminProjectConfig extends the organization-facing config with sensitive fields" - }, - "libops.v1.admin.AdminSiteConfig": { - "type": "object", - "properties": { - "config": { - "title": "config", - "description": "Organization-safe fields (embedded)", - "$ref": "#/components/schemas/libops.v1.common.SiteConfig" - }, - "githubWebhookUrl": { - "type": "string", - "title": "github_webhook_url", - "description": "GitHub integration", - "nullable": true - }, - "githubWebhookSecret": { - "type": "string", - "title": "github_webhook_secret", - "description": "Sensitive", - "nullable": true - }, - "githubTeamId": { - "type": "string", - "title": "github_team_id", - "description": "GitHub team ID for access control", - "nullable": true + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListSshKeysResponse" + } + } + }, + "description": "Success" }, - "gcpInstanceName": { - "type": "string", - "title": "gcp_instance_name", - "description": "Computed/managed fields (output from orchestration) GCE instance name", - "nullable": true + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" + } + }, + "security": [ + { + "oauth2": [ + "read:user" + ] }, - "gcpExternalIp": { - "type": "string", - "title": "gcp_external_ip", - "description": "External IP address", - "nullable": true + { + "apiKey": [] + } + ], + "summary": "List SSH keys for an account [Requires: read:user]", + "tags": [ + "libops.v1.SshKeyService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "account:read", + "x-scopes": [ + "read:user" + ] + } + }, + "/libops.v1.TaskService/CancelTask": { + "post": { + "description": "Cancel a queued, running, or input-blocked task.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", + "operationId": "libops.v1.TaskService.CancelTask", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "gcpInternalIp": { - "type": "string", - "title": "gcp_internal_ip", - "description": "Internal IP address", - "nullable": true + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } } - }, - "title": "AdminSiteConfig", - "additionalProperties": false, - "description": "AdminSiteConfig extends the organization-facing config with internal GCP details" - }, - "libops.v1.common.AuthMethod": { - "type": "string", - "title": "AuthMethod", - "enum": [ - "AUTH_METHOD_UNSPECIFIED", - "AUTH_METHOD_GOOGLE", - "AUTH_METHOD_USERPASS", - "AUTH_METHOD_GCLOUD" ], - "description": "AuthMethod represents how a user authenticates to libops" - }, - "libops.v1.common.DomainConfig": { - "type": "object", - "properties": { - "domain": { - "type": "string", - "title": "domain" - }, - "siteId": { - "type": "string", - "title": "site_id", - "format": "uuid" - }, - "cloudRunHostname": { - "type": "string", - "title": "cloud_run_hostname" - }, - "tier": { - "type": "string", - "title": "tier" - }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CancelTaskRequest" + } + } }, - "edgeAction": { - "title": "edge_action", - "$ref": "#/components/schemas/libops.v1.common.DomainEdgeAction" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CancelTaskResponse" + } + } + }, + "description": "Success" }, - "successLogSampleRate": { - "type": "number", - "title": "success_log_sample_rate", - "format": "double" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "DomainConfig", - "additionalProperties": false - }, - "libops.v1.common.DomainEdgeAction": { - "type": "string", - "title": "DomainEdgeAction", - "enum": [ - "DOMAIN_EDGE_ACTION_UNSPECIFIED", - "DOMAIN_EDGE_ACTION_ALLOW", - "DOMAIN_EDGE_ACTION_CHALLENGE", - "DOMAIN_EDGE_ACTION_BLOCK" - ] - }, - "libops.v1.common.FolderConfig": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "format": "uuid" - }, - "organizationName": { - "type": "string", - "title": "organization_name" - }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" - }, - "location": { - "title": "location", - "description": "Organization's preferred Google Cloud location and region Geographic location (ASIA, AU, CA, DE, EU, IN, IT, US)", - "$ref": "#/components/schemas/libops.v1.common.Location" + "security": [ + { + "oauth2": [ + "write:organization" + ] }, - "region": { - "type": "string", - "title": "region", - "description": "Specific region (e.g., \"us-central1\", \"europe-west1\")" + { + "apiKey": [] } - }, - "title": "FolderConfig", - "additionalProperties": false, - "description": "FolderConfig is the organization-facing folder/organization configuration\n Contains only safe, non-sensitive fields" - }, - "libops.v1.common.Location": { - "type": "string", - "title": "Location", - "enum": [ - "LOCATION_UNSPECIFIED", - "LOCATION_ASIA", - "LOCATION_AU", - "LOCATION_CA", - "LOCATION_DE", - "LOCATION_EU", - "LOCATION_IN", - "LOCATION_IT", - "LOCATION_US" ], - "description": "Location represents Google Cloud geographic locations" - }, - "libops.v1.common.ProjectConfig": { - "type": "object", - "properties": { - "organizationId": { - "type": "string", - "title": "organization_id", - "format": "uuid" - }, - "projectId": { - "type": "string", - "title": "project_id", - "format": "uuid" - }, - "projectName": { - "type": "string", - "title": "project_name" - }, - "createBranchSites": { - "type": "boolean", - "title": "create_branch_sites", - "description": "Auto-create sites for new branches" - }, - "region": { - "type": "string", - "title": "region", - "description": "GCP deployment configuration GCP region (e.g., \"us-central1\")" - }, - "zone": { - "type": "string", - "title": "zone", - "description": "GCP zone (e.g., \"us-central1-f\")" - }, - "machineType": { - "type": "string", - "title": "machine_type", - "description": "GCP machine type (e.g., \"e2-standard-2\")" - }, - "diskSizeGb": { - "type": "integer", - "title": "disk_size_gb", - "format": "int32", - "description": "Disk size in GB" - }, - "os": { - "type": "string", - "title": "os", - "description": "OS image (default: \"cos-125-19216-104-74\")" + "summary": "Cancel a queued, running, or input-blocked task. [Requires: write:organization]", + "tags": [ + "libops.v1.TaskService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:write", + "x-scopes": [ + "write:organization" + ] + } + }, + "/libops.v1.TaskService/CreateTask": { + "post": { + "description": "Create a new task from a natural language prompt.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", + "operationId": "libops.v1.TaskService.CreateTask", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "diskType": { - "type": "string", - "title": "disk_type", - "description": "Disk type (default: \"hyperdisk-balanced\")" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateTaskRequest" + } + } }, - "promote": { - "title": "promote", - "description": "Promotion strategy How to promote code to production", - "$ref": "#/components/schemas/libops.v1.common.PromoteStrategy" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.CreateTaskResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "description": "Status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ProjectConfig", - "additionalProperties": false, - "description": "ProjectConfig is the organization-facing project configuration\n Contains only safe, non-sensitive fields" - }, - "libops.v1.common.ProjectRuntimeConfig": { - "type": "object", - "properties": { - "runtimeId": { - "type": "string", - "title": "runtime_id", - "format": "uuid" - }, - "projectId": { - "type": "string", - "title": "project_id", - "format": "uuid" - }, - "name": { - "type": "string", - "title": "name" - }, - "role": { - "title": "role", - "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeRole" - }, - "region": { - "type": "string", - "title": "region", - "description": "GCP runtime placement and host configuration." - }, - "zone": { - "type": "string", - "title": "zone" + "security": [ + { + "oauth2": [ + "write:organization" + ] }, - "machineType": { - "type": "string", - "title": "machine_type" + { + "apiKey": [] + } + ], + "summary": "Create a new task from a natural language prompt. [Requires: write:organization]", + "tags": [ + "libops.v1.TaskService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:write", + "x-scopes": [ + "write:organization" + ] + } + }, + "/libops.v1.TaskService/GetTask": { + "get": { + "description": "Get a task by ID.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", + "operationId": "libops.v1.TaskService.GetTask.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "diskSizeGb": { - "type": "integer", - "title": "disk_size_gb", - "format": "int32" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "os": { - "type": "string", - "title": "os" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetTaskRequest" + } + } + }, + "in": "query", + "name": "message" }, - "diskType": { - "type": "string", - "title": "disk_type" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "gcpInstanceName": { - "type": "string", - "title": "gcp_instance_name", - "description": "Runtime host identity, populated by orchestration." + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "gcpExternalIp": { - "type": "string", - "title": "gcp_external_ip" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "gcpInternalIp": { - "type": "string", - "title": "gcp_internal_ip" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetTaskResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ProjectRuntimeConfig", - "additionalProperties": false, - "description": "ProjectRuntimeConfig describes one VM/runtime host inside a project.\n Sites are assigned to a runtime so multiple apps can share a VM." - }, - "libops.v1.common.ProjectRuntimeRole": { - "type": "string", - "title": "ProjectRuntimeRole", - "enum": [ - "PROJECT_RUNTIME_ROLE_UNSPECIFIED", - "PROJECT_RUNTIME_ROLE_PRODUCTION", - "PROJECT_RUNTIME_ROLE_EPHEMERAL", - "PROJECT_RUNTIME_ROLE_CUSTOM" - ] - }, - "libops.v1.common.PromoteStrategy": { - "type": "string", - "title": "PromoteStrategy", - "enum": [ - "PROMOTE_STRATEGY_UNSPECIFIED", - "PROMOTE_STRATEGY_GITHUB_TAG", - "PROMOTE_STRATEGY_GITHUB_RELEASE" + "security": [ + { + "oauth2": [ + "read:organization" + ] + }, + { + "apiKey": [] + } + ], + "summary": "Get a task by ID. [Requires: read:organization]", + "tags": [ + "libops.v1.TaskService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:organization" ] }, - "libops.v1.common.SiteConfig": { - "type": "object", - "properties": { - "siteId": { - "type": "string", - "title": "site_id", - "format": "uuid", - "description": "Unique site identifier (UUID)" - }, - "organizationId": { - "type": "string", - "title": "organization_id", - "format": "uuid" - }, - "projectId": { - "type": "string", - "title": "project_id", - "format": "uuid" - }, - "siteName": { - "type": "string", - "title": "site_name", - "description": "\"production\", \"staging\", \"development\"" - }, - "githubRepository": { - "type": "string", - "title": "github_repository", - "description": "GitHub repository configuration GitHub repository URL" - }, - "githubRef": { - "type": "string", - "title": "github_ref", - "description": "GitHub reference: heads/{branch_name}, tags/{tag_name}, or \"release\"" - }, - "composePath": { - "type": "string", - "title": "compose_path", - "description": "Path to docker-compose directory (default: \"\")" - }, - "composeFile": { - "type": "string", - "title": "compose_file", - "description": "Docker compose file name (default: \"docker-compose.yml\")" - }, - "port": { - "type": "integer", - "title": "port", - "format": "int32", - "description": "Application configuration Port the application listens on (default: 80)" + "post": { + "description": "Get a task by ID.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", + "operationId": "libops.v1.TaskService.GetTask", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "applicationType": { - "type": "string", - "title": "application_type", - "description": "Type of application (default: \"generic\")" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetTaskRequest" + } + } }, - "upCmd": { - "type": "array", - "items": { - "type": "string" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.GetTaskResponse" + } + } }, - "title": "up_cmd", - "description": "Docker compose commands Commands to start containers" + "description": "Success" }, - "initCmd": { - "type": "array", - "items": { - "type": "string" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } }, - "title": "init_cmd", - "description": "Commands to run on initial setup" + "description": "Error" + } + }, + "security": [ + { + "oauth2": [ + "read:organization" + ] }, - "rolloutCmd": { - "type": "array", - "items": { - "type": "string" - }, - "title": "rollout_cmd", - "description": "Commands to run during rollout" + { + "apiKey": [] + } + ], + "summary": "Get a task by ID. [Requires: read:organization]", + "tags": [ + "libops.v1.TaskService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:organization" + ] + } + }, + "/libops.v1.TaskService/ListTasks": { + "get": { + "description": "List tasks scoped by organization/project/site.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", + "operationId": "libops.v1.TaskService.ListTasks.get", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "overlayVolumes": { - "type": "array", - "items": { - "type": "string" - }, - "title": "overlay_volumes", - "description": "Overlay volume paths" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } }, - "os": { - "type": "string", - "title": "os", - "description": "GCP deployment configuration OS image (default: \"cos-125-19216-104-74\")" + { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListTasksRequest" + } + } + }, + "in": "query", + "name": "message" }, - "isProduction": { - "type": "boolean", - "title": "is_production", - "description": "Whether this is the production instance" + { + "in": "query", + "name": "encoding", + "required": true, + "schema": { + "$ref": "#/components/schemas/encoding" + } }, - "projectRuntimeId": { - "type": "string", - "title": "project_runtime_id", - "format": "uuid", - "description": "Runtime/VM placement. On create, set one of project_runtime_id,\n project_runtime_name, or project_runtime_role to choose a runtime. If unset,\n production sites use the production runtime and other sites use ephemeral." + { + "in": "query", + "name": "base64", + "schema": { + "$ref": "#/components/schemas/base64" + } }, - "projectRuntimeName": { - "type": "string", - "title": "project_runtime_name" + { + "in": "query", + "name": "compression", + "schema": { + "$ref": "#/components/schemas/compression" + } }, - "projectRuntimeRole": { - "title": "project_runtime_role", - "$ref": "#/components/schemas/libops.v1.common.ProjectRuntimeRole" + { + "in": "query", + "name": "connect", + "schema": { + "$ref": "#/components/schemas/connect" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListTasksResponse" + } + } + }, + "description": "Success" }, - "status": { - "title": "status", - "description": "Status (organization-visible)", - "$ref": "#/components/schemas/libops.v1.common.Status" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "SiteConfig", - "additionalProperties": false, - "description": "SiteConfig is the organization-facing site configuration\n Contains only safe, non-sensitive fields" - }, - "libops.v1.common.Status": { - "type": "string", - "title": "Status", - "enum": [ - "STATUS_UNSPECIFIED", - "STATUS_ACTIVE", - "STATUS_PROVISIONING", - "STATUS_FAILED", - "STATUS_SUSPENDED", - "STATUS_DELETED" - ], - "description": "Status represents the lifecycle state of libops entities\n Used across organization, project, site, member, and firewall resources" - }, - "libops.v1.options.AccessLevel": { - "type": "string", - "title": "AccessLevel", - "enum": [ - "ACCESS_LEVEL_UNSPECIFIED", - "ACCESS_LEVEL_READ", - "ACCESS_LEVEL_WRITE", - "ACCESS_LEVEL_ADMIN" + "security": [ + { + "oauth2": [ + "read:organization" + ] + }, + { + "apiKey": [] + } ], - "description": "AccessLevel represents the type of access required\n Higher levels include permissions of lower levels\n ADMIN > WRITE > READ" - }, - "libops.v1.options.ResourceType": { - "type": "string", - "title": "ResourceType", - "enum": [ - "RESOURCE_TYPE_UNSPECIFIED", - "RESOURCE_TYPE_SYSTEM", - "RESOURCE_TYPE_ACCOUNT", - "RESOURCE_TYPE_ORGANIZATION", - "RESOURCE_TYPE_PROJECT", - "RESOURCE_TYPE_SITE" + "summary": "List tasks scoped by organization/project/site. [Requires: read:organization]", + "tags": [ + "libops.v1.TaskService" ], - "description": "ResourceType represents the hierarchical level of a resource\n The hierarchy is: SYSTEM > ORGANIZATION > PROJECT > SITE" + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:organization" + ] }, - "libops.v1.options.ScopeRule": { - "type": "object", - "properties": { - "resource": { - "title": "resource", - "description": "The resource type this method operates on", - "$ref": "#/components/schemas/libops.v1.options.ResourceType" - }, - "level": { - "title": "level", - "description": "The minimum access level required", - "$ref": "#/components/schemas/libops.v1.options.AccessLevel" + "post": { + "description": "List tasks scoped by organization/project/site.\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `read:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `read:organization` |\n", + "operationId": "libops.v1.TaskService.ListTasks", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } }, - "allowParentAccess": { - "type": "boolean", - "title": "allow_parent_access", - "description": "Optional: if true, allows parent resource access to satisfy this requirement\n For example, ORGANIZATION_ADMIN can access PROJECT_READ if allow_parent_access=true\n Default is true to maintain hierarchical access model" + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListTasksRequest" + } + } }, - "oauthScopes": { - "type": "array", - "items": { - "type": "string" + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.ListTasksResponse" + } + } }, - "title": "oauth_scopes", - "description": "OAuth scope strings required for this endpoint\n These are the actual OAuth 2.0 scope values that will appear in documentation\n Example: [\"read:organization\", \"read:members\"]" + "description": "Success" }, - "resourceIdField": { - "type": "string", - "title": "resource_id_field", - "description": "Optional: field name in the request message containing the resource ID to check membership\n If specified, the interceptor will automatically check membership for this resource\n Examples: \"organization_id\", \"project_id\", \"site_id\"\n The interceptor will extract this field from the request and verify the user is a member" - }, - "parentResourceIdField": { - "type": "string", - "title": "parent_resource_id_field", - "description": "Optional: for create operations, this specifies the parent resource field to check\n Example: for CreateProject, parent_resource_id_field = \"organization_id\"\n This ensures user is a member of the parent before allowing creation" - }, - "parentResource": { - "title": "parent_resource", - "description": "Optional: the parent resource type (only needed if parent_resource_id_field is set)", - "$ref": "#/components/schemas/libops.v1.options.ResourceType" + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" } }, - "title": "ScopeRule", - "additionalProperties": false, - "description": "ScopeRule defines the authorization requirements for an RPC method\n This annotation tells the authorization middleware what level of access is required" + "security": [ + { + "oauth2": [ + "read:organization" + ] + }, + { + "apiKey": [] + } + ], + "summary": "List tasks scoped by organization/project/site. [Requires: read:organization]", + "tags": [ + "libops.v1.TaskService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:read", + "x-scopes": [ + "read:organization" + ] } }, - "securitySchemes": { - "oauth2": { - "type": "oauth2", - "description": "OAuth 2.0 authentication via Vault OIDC", - "flows": { - "authorizationCode": { - "authorizationUrl": "/auth/oauth/authorize", - "tokenUrl": "/auth/oauth/token", - "scopes": { - "read:user": "Read user account information", - "write:user": "Update user account information", - "read:organizations": "Read user's organizations", - "read:organization": "Read organization details", - "write:organization": "Update organization", - "delete:organization": "Delete organization", - "read:projects": "Read organization projects", - "create:projects": "Create organization projects", - "write:projects": "Update organization projects", - "delete:projects": "Delete organization projects", - "read:members": "Read organization/project/site members", - "write:members": "Manage organization/project/site members", - "delete:members": "Remove organization/project/site members", - "read:invoices": "Read organization invoices", - "read:firewall": "Read firewall rules", - "write:firewall": "Update firewall rules", - "delete:firewall": "Delete firewall rules", - "read:site": "Read site details", - "write:site": "Update site configuration", - "delete:site": "Delete site", - "read:sites": "Read project sites", - "write:sites": "Update project sites", - "delete:sites": "Delete project sites", - "promote_sites": "Promote sites between environments", - "read:project": "Read project details", - "write:project": "Update project", - "delete:project": "Delete project", - "manage_secrets": "Read, write, and delete secrets", - "admin:system": "Full system administrative access" + "/libops.v1.TaskService/UpdateTask": { + "post": { + "description": "Update a task (status, prompt, input, results).\n\n### Authorization\n\nAn API key or OAuth token must have at least one of the following scopes in order to use this API endpoint:\n\n**API Key Scopes**: `write:organization`\n\n**OAuth Scopes**\n\n| Resource | Scope |\n|----------|-------|\n| Organization | `write:organization` |\n", + "operationId": "libops.v1.TaskService.UpdateTask", + "parameters": [ + { + "in": "header", + "name": "Connect-Protocol-Version", + "required": true, + "schema": { + "$ref": "#/components/schemas/connect-protocol-version" + } + }, + { + "in": "header", + "name": "Connect-Timeout-Ms", + "schema": { + "$ref": "#/components/schemas/connect-timeout-header" } } - } - }, - "apiKey": { - "type": "http", - "scheme": "bearer", - "bearerFormat": "API Key", - "description": "API key authentication (prefix: libops_)" + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateTaskRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/libops.v1.UpdateTaskResponse" + } + } + }, + "description": "Success" + }, + "default": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/connect.error" + } + } + }, + "description": "Error" + } + }, + "security": [ + { + "oauth2": [ + "write:organization" + ] + }, + { + "apiKey": [] + } + ], + "summary": "Update a task (status, prompt, input, results). [Requires: write:organization]", + "tags": [ + "libops.v1.TaskService" + ], + "x-auth-type": "oauth2 or apiKey", + "x-min-access-level": "organization:write", + "x-scopes": [ + "write:organization" + ] } } }, @@ -21140,118 +15111,100 @@ "apiKey": [] } ], - "tags": [ - { - "name": "libops.v1.AdminAccountService", - "description": "AdminAccountService manages user accounts (admin only)" - }, - { - "name": "libops.v1.AdminOrganizationService", - "description": "AdminOrganizationService manages admin-level organization operations with full access" - }, - { - "name": "libops.v1.AdminSiteService", - "description": "AdminSiteService manages admin-level site operations with full access" - }, - { - "name": "libops.v1.AdminProjectService", - "description": "AdminProjectService manages admin-level project operations with full access" - }, - { - "name": "libops.v1.AdminReconciliationService", - "description": "AdminReconciliationService handles reconciliation operations\n Called by Cloud Run reconciliation services with GSA authentication" - }, + "servers": [ { - "name": "libops.v1.AdminConvergenceService", - "description": "AdminConvergenceService checks desired-state convergence and can request\n repair workflows for stuck resources." - }, + "description": "Production server", + "url": "https://api.libops.io" + } + ], + "tags": [ { - "name": "libops.v1.TaskService", - "description": "TaskService manages queued automation tasks." + "description": "TaskService manages queued automation tasks.", + "name": "libops.v1.TaskService" }, { - "name": "libops.v1.AssistantService", - "description": "AssistantService manages chat-driven automation requests." + "description": "AssistantService manages chat-driven automation requests.", + "name": "libops.v1.AssistantService" }, { - "name": "libops.v1.OperationService", - "description": "OperationService exposes end-to-end status for customer-visible mutations." + "description": "OperationService exposes end-to-end status for customer-visible mutations.", + "name": "libops.v1.OperationService" }, { - "name": "libops.v1.AccountService", - "description": "AccountService provides limited account lookup for authenticated users" + "description": "AccountService provides limited account lookup for authenticated users", + "name": "libops.v1.AccountService" }, { - "name": "libops.v1.OrganizationService", - "description": "OrganizationService manages organization-facing organization/folder operations" + "description": "OrganizationService manages organization-facing organization/folder operations", + "name": "libops.v1.OrganizationService" }, { - "name": "libops.v1.SiteService", - "description": "SiteService manages organization-facing site operations" + "description": "SiteService manages organization-facing site operations", + "name": "libops.v1.SiteService" }, { - "name": "libops.v1.DomainService", - "description": "DomainService manages custom domains for sites." + "description": "DomainService manages custom domains for sites.", + "name": "libops.v1.DomainService" }, { - "name": "libops.v1.ProjectService", - "description": "ProjectService manages organization-facing project operations" + "description": "ProjectService manages organization-facing project operations", + "name": "libops.v1.ProjectService" }, { - "name": "libops.v1.FirewallService", - "description": "FirewallService manages firewall operations for all sites for a organization" + "description": "FirewallService manages firewall operations for all sites for a organization", + "name": "libops.v1.FirewallService" }, { - "name": "libops.v1.ProjectFirewallService", - "description": "ProjectFirewallService manages firewall operations for all sites in a project" + "description": "ProjectFirewallService manages firewall operations for all sites in a project", + "name": "libops.v1.ProjectFirewallService" }, { - "name": "libops.v1.SiteFirewallService", - "description": "SiteFirewallService manages firewall operations for a specific site" + "description": "SiteFirewallService manages firewall operations for a specific site", + "name": "libops.v1.SiteFirewallService" }, { - "name": "libops.v1.MemberService", - "description": "MemberService manages organization membership operations" + "description": "MemberService manages organization membership operations", + "name": "libops.v1.MemberService" }, { - "name": "libops.v1.ProjectMemberService", - "description": "ProjectMemberService manages project membership operations" + "description": "ProjectMemberService manages project membership operations", + "name": "libops.v1.ProjectMemberService" }, { - "name": "libops.v1.SiteMemberService", - "description": "SiteMemberService manages site membership operations" + "description": "SiteMemberService manages site membership operations", + "name": "libops.v1.SiteMemberService" }, { - "name": "libops.v1.SshKeyService", - "description": "SshKeyService manages SSH keys for accounts" + "description": "SshKeyService manages SSH keys for accounts", + "name": "libops.v1.SshKeyService" }, { - "name": "libops.v1.SiteOperationsService", - "description": "SiteOperationsService manages site deployment and operational tasks" + "description": "SiteOperationsService manages site deployment and operational tasks", + "name": "libops.v1.SiteOperationsService" }, { - "name": "libops.v1.OrganizationSecretService", - "description": "OrganizationSecretService manages organization-level secrets" + "description": "OrganizationSecretService manages organization-level secrets", + "name": "libops.v1.OrganizationSecretService" }, { - "name": "libops.v1.ProjectSecretService", - "description": "ProjectSecretService manages project-level secrets" + "description": "ProjectSecretService manages project-level secrets", + "name": "libops.v1.ProjectSecretService" }, { - "name": "libops.v1.SiteSecretService", - "description": "SiteSecretService manages site-level secrets" + "description": "SiteSecretService manages site-level secrets", + "name": "libops.v1.SiteSecretService" }, { - "name": "libops.v1.OrganizationSettingService", - "description": "OrganizationSettingService manages organization-level settings" + "description": "OrganizationSettingService manages organization-level settings", + "name": "libops.v1.OrganizationSettingService" }, { - "name": "libops.v1.ProjectSettingService", - "description": "ProjectSettingService manages project-level settings" + "description": "ProjectSettingService manages project-level settings", + "name": "libops.v1.ProjectSettingService" }, { - "name": "libops.v1.SiteSettingService", - "description": "SiteSettingService manages site-level settings" + "description": "SiteSettingService manages site-level settings", + "name": "libops.v1.SiteSettingService" } ] } diff --git a/api/reference/retry_site_domain_provisioning.mdx b/api/reference/retry_site_domain_provisioning.mdx new file mode 100644 index 0000000..1e819e1 --- /dev/null +++ b/api/reference/retry_site_domain_provisioning.mdx @@ -0,0 +1,4 @@ +--- +title: 'RetrySiteDomainProvisioning' +openapi: 'POST /libops.v1.DomainService/RetrySiteDomainProvisioning' +--- diff --git a/api/reference/site_check_in.mdx b/api/reference/site_check_in.mdx deleted file mode 100644 index cc26f07..0000000 --- a/api/reference/site_check_in.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Site VM check-in (updates checkin_at timestamp)' -openapi: 'POST /libops.v1.AdminSiteService/SiteCheckIn' ---- diff --git a/api/reference/sync_manifest.mdx b/api/reference/sync_manifest.mdx deleted file mode 100644 index 4e409b9..0000000 --- a/api/reference/sync_manifest.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Sync site manifest - returns state hash and signed URLs to blobs (for eventual consistency) Called by site VMs every ~24h for eventual consistency' -openapi: 'GET /libops.v1.AdminSiteService/SyncManifest' ---- diff --git a/api/reference/update_account.mdx b/api/reference/update_account.mdx deleted file mode 100644 index 807e151..0000000 --- a/api/reference/update_account.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Update account information [Requires: admin:system]' -openapi: 'POST /libops.v1.AdminAccountService/UpdateAccount' ---- diff --git a/api/reference/update_reconciliation_status.mdx b/api/reference/update_reconciliation_status.mdx deleted file mode 100644 index 4a28895..0000000 --- a/api/reference/update_reconciliation_status.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: 'Update reconciliation run status' -openapi: 'POST /libops.v1.AdminReconciliationService/UpdateReconciliationStatus' ---- diff --git a/docs.json b/docs.json index 035d66f..401804a 100644 --- a/docs.json +++ b/docs.json @@ -139,9 +139,12 @@ { "group": "Domains", "pages": [ + "api/reference/check_site_domain", "api/reference/create_site_domain", "api/reference/delete_site_domain", - "api/reference/list_site_domains" + "api/reference/get_site_domain", + "api/reference/list_site_domains", + "api/reference/retry_site_domain_provisioning" ] }, { @@ -299,7 +302,6 @@ { "group": "Task Agent", "pages": [ - "api/reference/append_task_log", "api/reference/cancel_task", "api/reference/create_task", "api/reference/get_task", diff --git a/platform/api-cli.mdx b/platform/api-cli.mdx index 3438c12..d81f63f 100644 --- a/platform/api-cli.mdx +++ b/platform/api-cli.mdx @@ -3,11 +3,11 @@ title: "API and sitectl" description: "How the LibOps API and sitectl command line support operators, developers, and automation" --- -LibOps gives teams three operating surfaces: the dashboard, the full platform API, and the `sitectl` command-line utility. +LibOps gives teams three operating surfaces: the dashboard, the customer-facing platform API, and the `sitectl` command-line utility. That matters because institutions rarely have a single type of operator. Some work belongs in a UI, some belongs in automation, and some belongs in a terminal next to the application repository. -## Full Platform API +## Customer Platform API The LibOps API exposes the core platform resources: @@ -24,6 +24,8 @@ The LibOps API exposes the core platform resources: Teams can use the API to integrate LibOps with provisioning systems, reporting workflows, governance tooling, or internal service catalogs. +The published OpenAPI document intentionally excludes LibOps administrative and control-plane RPCs. Those operations are internal implementation details, not customer automation contracts. + Explore the LibOps API endpoints and OpenAPI specification. From 463809647449f790658cbfaa74f656365c5a9471 Mon Sep 17 00:00:00 2001 From: Joe Corall Date: Sat, 8 Aug 2026 19:19:17 +0000 Subject: [PATCH 2/2] [patch] Align first-customer guidance --- platform/coding-agent-workflow.mdx | 53 ++++++++++++++++++++---------- platform/site-manager-guide.mdx | 20 +++++++---- platform/slack.mdx | 19 +++++++---- quickstart.mdx | 10 ++++-- snippets/task-agent.mdx | 2 +- 5 files changed, 70 insertions(+), 34 deletions(-) diff --git a/platform/coding-agent-workflow.mdx b/platform/coding-agent-workflow.mdx index 5db157c..6ecc21e 100644 --- a/platform/coding-agent-workflow.mdx +++ b/platform/coding-agent-workflow.mdx @@ -7,19 +7,19 @@ The **LibOps Task Agent** is an AI-assisted development tool that implements cus This workflow lets stakeholders propose and preview site changes without bypassing technical review, quality assurance, or established deployment controls. - -The default model is `glm-5.2:cloud`. `kimi-k2.6` is also supported, and LibOps evaluates new open-weight models as they become available. - + +The Task Agent is currently a managed-beta capability, not a generally available production feature. As of August 8, 2026, the release candidate is blocked: its catalog still points to a sandbox build that predates the required managed-egress contract, and its embedded skill manifest points to a canonical source revision that has not been published. LibOps will enable it only after replacement artifacts pass release verification, the organization model gateway passes its dependency readiness check, and an end-to-end coding-task canary succeeds. Do not make Task Agent availability part of an initial site launch plan unless LibOps confirms those checks for your deployment. + ## Models and execution boundary -The LibOps Task Agent can run `codex`, `claude`, `pi`, `opencode`, or `gemini` through the [`libops/cli-sandbox`](https://github.com/libops/cli-sandbox) image. +The candidate production catalog contains one runtime selection: the `codex` harness through an exact digest of the [`libops/cli-sandbox`](https://github.com/libops/cli-sandbox) image, using the customer model name `glm-5.2:cloud`. Other harnesses and models are not supported options in this catalog. A catalog entry is configuration, not evidence that the runtime has passed promotion. -The supported models run inside your organization's infrastructure on the LibOps-managed platform. Only members of your organization can access the infrastructure serving those models. +Your organization's private Cloud Run service is an authenticated model gateway. It does not host model weights or perform inference. The gateway maps the customer model name `glm-5.2:cloud` to `glm-5.2` and forwards the request to Ollama Cloud at `https://ollama.com`, where inference runs. Access to the organization gateway remains private to authorized platform workloads. -Contact [LibOps](https://www.libops.io/contact/) if your organization wants to integrate with Anthropic, OpenAI, or another model provider. +LibOps reviews new runtime options before adding them to the production catalog; documentation and provisioning are updated together when support is available. -For site coding tasks, the runner requests the application plugin's assistant development mode before the harness starts. Drupal, WordPress, and ISLE currently declare safe downstream-owned mount lists and a profiled `cli-sandbox` service in `docker-compose.override.yml`. Bundled applications such as OJS, Omeka, and ArchivesSpace do not expose broad development mounts because those mounts could hide extensions supplied by the versioned image; their changes stay in explicit tracked extension paths and are tested through a rebuilt downstream image. Current component options and command syntax live in the [sitectl component documentation](https://sitectl.libops.io/components). +For hosted coding tasks, the runtime controller owns a fixed direct Docker launch and does not execute or rewrite a customer repository's Compose configuration to define the sandbox. The agent receives the isolated task checkout and bounded runtime files; it does not receive the Docker socket, production checkout, cloud credentials, or GitHub token. Application-specific guidance comes from the release-verified embedded skill bundle without broadening that execution boundary. ## Why use the LibOps Task Agent? @@ -37,17 +37,17 @@ This is **not** unchecked automation. It reduces the time between "we need a cha A site owner, developer, or LibOps operator defines a task for a specific site. - - LibOps provisions or selects an isolated development or ephemeral preview environment for the work. + + LibOps reserves a dedicated task branch at the verified base revision and brings its non-production preview environment to readiness. The Task Agent implements the change in the site's repository on a dedicated task branch. - - The agent opens or updates a GitHub pull request, which becomes the record of every code and configuration change. - - The preview environment shows the proposed changes on a live version of the site. + LibOps pushes the changed revision and waits for that exact commit to reach a ready preview state. + + + After preview readiness, the agent opens or updates a GitHub pull request, which becomes the record of every code and configuration change. Site managers and other stakeholders validate the behavior and content in the preview environment before production changes. @@ -63,9 +63,28 @@ This is **not** unchecked automation. It reduces the time between "we need a cha +## Starting a task from the Dashboard + +This path is available only after LibOps confirms Task Agent managed-beta readiness for the deployed release. + + + + Confirm the Site's repository provisioning and initial deployment are ready. A newly accepted or still-provisioning Site is not ready for coding work. + + + Open the Site detail page and select **Open Task Agent**. The Dashboard carries the Organization, Project, and Site context into the Tasks page. + + + Verify the selected context, describe one bounded outcome, and select **Start**. Do not include passwords, API keys, tokens, or other secret values in the request. + + + Follow the task status, then inspect both the exact preview and GitHub pull request before approving a merge. + + + ## Starting a task from Slack -The LibOps Slack integration lets stakeholders start tasks without leaving their primary communication tool. +An operator-linked Slack workspace can start tasks without leaving the primary communication tool. Slack and Task Agent must both be enabled for the exact managed-beta deployment; see [Slack Integration](/platform/slack) before using these commands. @@ -169,7 +188,7 @@ The Task Agent is useful when stakeholders need a reviewable change but do not n - No local environment required. - Same GitHub PR + preview environment as the manual path. - Iterative refinement via `@libops` PR comments. - - Available from the Dashboard or Slack. + - Available from the Dashboard, or an operator-linked Slack workspace, only for an approved managed-beta deployment. @@ -186,7 +205,7 @@ The Task Agent is useful when stakeholders need a reviewable change but do not n Use the same Git-based workflow as the agent: create a branch, push changes, and open a PR. - Opening a PR provisions a preview environment for your branch, exactly like the agent path. + Opening a PR provisions a preview environment through the same branch deployment contract. The timing differs: the agent path verifies its updated preview before opening the PR. Operate local or remote Compose contexts with sitectl, and use the LibOps platform integration for managed secrets and deployments. @@ -237,7 +256,7 @@ This combination lets directors, site managers, and engineers participate withou Managed, co-managed, and self-managed customization options. - Use the LibOps Task Agent from your Slack workspace. + Connect an approved managed-beta Slack workspace to the LibOps Task Agent. How task branches, pull requests, and preview environments integrate with your repository. diff --git a/platform/site-manager-guide.mdx b/platform/site-manager-guide.mdx index 8335693..52a61bc 100644 --- a/platform/site-manager-guide.mdx +++ b/platform/site-manager-guide.mdx @@ -31,24 +31,30 @@ You primarily interact with LibOps through the hosted dashboard and, if configur Most site management workflows begin in the Dashboard. +The first paid managed Site uses the single-page onboarding flow described in the [Quickstart](/quickstart): choose the template and infrastructure, complete checkout, and wait for the durable provisioning status to finish. The steps below describe adding a Site after the Organization and Project already exist. + Identify the institutional organization and project that should own the new site. - - Select **Create site** and choose one of the supported application templates. + + For a customer-owned repository, install the LibOps GitHub App with access to the repository and start from a supported application template. First-site onboarding creates the private LibOps-managed repository automatically. - - Decide whether LibOps should manage the site's repository or connect to your own GitHub organization. + + Select **Create site**, enter the installed customer repository, and choose the compatible application template so the Dashboard can apply its lifecycle defaults. - Name the site, choose its purpose (production, staging, etc.), and set the intended hostname. + Name the Site and mark it as production only when it represents the repository's production branch. Configure a custom hostname after the Site exists. - - Confirm the generated configuration, including repository, access, and hostnames, then finalize the site. + + Site creation records desired state; it is not deployment success. Wait for provisioning and the initial deployment to reach their terminal ready states before configuring DNS or starting review work. + +If managed onboarding or Site provisioning reports a terminal failure, do not create a replacement with the same repository or purchase another subscription. Contact LibOps so the recorded operation can be safely resumed or refunded without duplicating infrastructure. + + LibOps only supports workloads based on the documented templates. Running other applications on managed infrastructure is not permitted. See the [Terms of Service](https://www.libops.io/terms/) for details. diff --git a/platform/slack.mdx b/platform/slack.mdx index e8452b3..de6b3c8 100644 --- a/platform/slack.mdx +++ b/platform/slack.mdx @@ -3,19 +3,24 @@ title: "Slack Integration" description: "How to use the LibOps Task Agent directly from your Slack workspace" --- -The LibOps Slack integration lets team members work with the **LibOps Task Agent** without leaving Slack. You can request site changes, check environment status, and iterate on tasks through threaded conversations. +The LibOps Slack integration lets team members work with the **LibOps Task Agent** without leaving Slack. It is available only for an approved managed-beta deployment whose release evidence includes Slack and Task Agent compatibility. It is not a public Community Slack support channel. + + + The current Dashboard does not contain a Slack installation screen. Do not look for an **Organization Settings → Integrations** button. Installation is operator-assisted until that owner-authorized Dashboard journey and its acceptance tests ship. + ## Connect Your Slack Workspace -To enable the Slack integration for your institution: +To evaluate the Slack integration for your institution: -1. Open **Organization Settings** in your LibOps dashboard. -2. Under **Integrations**, locate Slack and click **Install Slack App**. -3. Follow the Slack prompts to authorize the LibOps app and grant the necessary permissions to your workspace. -4. Once authorized, individual team members can link their LibOps accounts by running `/libops login` in Slack. +1. Ask your LibOps managed-beta contact to confirm that Slack is enabled for the exact deployed API release and to provide that environment's installation URL. +2. Have an authorized Slack Workspace Owner review the requested bot scopes and open the provided installation URL. The server-owned route is `/integrations/slack/install`; do not copy an installation URL between LibOps environments. +3. Complete Slack's authorization prompt. LibOps stores the workspace bot token in its configured secret store and records the workspace installation; it does not request a Slack user token. +4. In Slack, run `/libops login`. Follow the one-time link to sign in to LibOps and explicitly confirm the account connection. +5. Verify `/libops orgs`, then use `/libops unlink` if the account was linked in error. - If your Slack Workspace Owner requires admin approval for new apps, ensure the LibOps app is approved before attempting installation. + Slack installation is workspace-wide, while `/libops login` links one Slack user to one LibOps account. Removing the app in Slack revokes the recorded workspace installation and deletes its stored bot token. Contact your managed-beta operator if installation, revocation, or account unlinking does not reach that terminal state. ## Discovering Resources diff --git a/quickstart.mdx b/quickstart.mdx index 34b7da8..e62e510 100644 --- a/quickstart.mdx +++ b/quickstart.mdx @@ -20,6 +20,8 @@ Choose the application that meets the service need, then name the institutional For a managed Site, sign in to the [LibOps dashboard](https://dash.libops.io). For a self-hosted Site, start with the matching downstream template and [fork ownership guide](/templates/downstream-forks). +For a first managed purchase, the onboarding screen collects the organization name, a provider-verified GitHub account, the supported application template, VM size, and storage choice before checkout. After Stripe confirms payment, one durable provisioning operation creates the project, private managed repository, production Site, initial deployment, and IP allowlist. The progress screen reports that operation; closing the browser does not cancel it. If onboarding reports that setup needs support, do not submit another purchase or create duplicate resources—contact LibOps from the link on that screen. + ## 2. Establish the resource boundary Managed resources are organized as: @@ -28,7 +30,7 @@ Managed resources are organized as: 2. **Project** — related Sites and configuration that share an application purpose. 3. **Site** — one runtime environment, such as production, staging, or review. -Create or select each level in the dashboard. Keep shared settings at the highest appropriate scope and use Site-level overrides only when one environment must differ. See [Resource Hierarchy](/platform/resource-hierarchy) for membership, firewall, setting, and secret inheritance. +The first managed onboarding flow creates or selects the Organization and then creates its Project and production Site. Existing customers can select an existing Organization and Project when adding another Site. Keep shared settings at the highest appropriate scope and use Site-level overrides only when one environment must differ. See [Resource Hierarchy](/platform/resource-hierarchy) for membership, firewall, setting, and secret inheritance. Self-hosted operators should establish the same environment boundaries in repository, DNS, credential, and backup naming even when they do not use the managed API. @@ -36,7 +38,7 @@ Self-hosted operators should establish the same environment boundaries in reposi The downstream repository owns application customizations, Compose configuration, and reviewed environment defaults. Do not edit a running container as a deployment mechanism. -- **Managed platform:** connect the Site to its GitHub repository and branch, then let the platform build and deploy the reviewed revision. +- **Managed first site:** onboarding copies the selected template into a private LibOps-managed repository and resolves its default branch before creating the initial deployment. For a customer-owned repository, install the LibOps GitHub App with access to that repository before connecting it to a Site. - **Self-hosted:** provision a supported runtime, persistent storage, DNS, and backups, then deploy the fork using the template contract. [cloud-compose](/infrastructure/cloud-compose) can provision supported VM-based environments. Technical operators can add `sitectl` for consistent local and remote Compose contexts. Installation, exact command syntax, and application-plugin behavior are maintained in the [canonical sitectl documentation](https://sitectl.libops.io), not duplicated here. @@ -52,6 +54,10 @@ Keep a new Site private while staff validate it. Before launch: - review the Site in a non-production environment and merge the approved repository change; - follow [Getting a Site Ready to Publish](/platform/getting-site-ready-to-publish) for DNS, firewall, email, and launch checks. +## 5. Make the first reviewed change + +You can always work through a normal branch and GitHub pull request. In an approved managed-beta deployment where LibOps has enabled the Task Agent for the exact release, open the ready Site in the Dashboard, select **Open Task Agent**, confirm the Organization, Project, and Site context, and describe one scoped change. Review both the resulting preview and pull request before merging. See the [Task Agent workflow](/platform/coding-agent-workflow) for its current availability gates and review boundary. + ## Operator references diff --git a/snippets/task-agent.mdx b/snippets/task-agent.mdx index e72e0ae..79edf7e 100644 --- a/snippets/task-agent.mdx +++ b/snippets/task-agent.mdx @@ -9,4 +9,4 @@ The **LibOps Task Agent** does the technical work. Your team reviews every chang Every change is transparent, reviewable, and tied to the GitHub workflow your team already knows. -The default model is `glm-5.2:cloud`. `kimi-k2.6` is also supported. Harnesses run through `libops/cli-sandbox`. When an application plugin declares a safe assistant development mode, the runner uses its downstream-owned mounts; bundled applications keep changes in explicit tracked extension paths and rebuild the downstream image instead of masking image-owned directories. Models run inside your organization's infrastructure on the LibOps-managed platform, with access limited to members of your organization. LibOps evaluates new open weight models as they become available. +Task Agent is currently managed beta, not generally available. The candidate production catalog has one runtime selection: the `codex` harness through an exact `libops/cli-sandbox` digest, using the customer model name `glm-5.2:cloud`. The hosted controller owns the direct sandbox launch and does not trust customer Compose configuration to define it. The private Cloud Run service in the customer organization is an authenticated gateway, not a model host: inference runs on Ollama Cloud after the gateway maps `glm-5.2:cloud` to `glm-5.2`. LibOps enables a release only after its pinned sandbox and embedded skills pass verification, gateway readiness succeeds, and an end-to-end coding canary passes.