{
  "swagger": "2.0",
  "info": {
    "title": "Boundary controller HTTP API",
    "description": "Welcome to the Boundary controller HTTP API documentation. This page provides a reference guide for using the Boundary controller API, a JSON-based HTTP API. The API implements commonly seen HTTP API patterns for status codes, paths, and errors. See the [API overview](https://developer.hashicorp.com/boundary/docs/api-clients/api) for more information.\n\nBefore you read this page, it is useful to understand Boundary's [domain model](https://developer.hashicorp.com/boundary/docs/concepts/domain-model) and to be aware of the terminology used here. To get started, search for the service you want to interact with in the sidebar to the left. Each resource in Boundary, such as accounts and credential stores, has its own service. Each service contains all the API endpoints for the resource.\n## Status codes\n- `2XX`: Boundary returns a code between `200` and `299` on success. Generally this is `200`, but implementations should be prepared to accept any `2XX` status code as indicating success. If a call returns a `2XX` code that is not `200`, it follows well-understood semantics for those status codes.\n- `400`: Boundary returns `400` when a command cannot be completed due to invalid user input, except for a properly-formatted identifier that does not map to an existing resource, which returns a `404` as discussed below.\n- `401`: Boundary returns `401` if no authentication token is provided or if the provided token is invalid. A valid token that simply does not have permission for a resource returns a `403` instead. A token that is invalid or missing, but where the anonymous user (`u_anon`) is able to successfully perform the action, will not return a `401` but instead will return the result of the action.\n- `403`: Boundary returns `403` if a provided token was valid but does not have the grants required to perform the requested action.\n- `404`: Boundary returns `404` if a resource cannot be found. Note that this happens _prior_ to authentication/authorization checking in nearly all cases as the resource information (such as its scope, available actions, etc.) is a required part of that check. As a result, an action against a resource that does not exist returns a `404` instead of a `401` or `403`. While this could be considered an information leak, since IDs are randomly generated and this only discloses whether an ID is valid, it's tolerable as it allows for far simpler and more robust client implementation.\n- `405`: Boundary returns a `405` to indicate that the method (HTTP verb or custom action) is not implemented for the given resource.\n- `429`: Boundary returns a `429` if any of the API rate limit quotas have been exhausted for the resource and action. It includes the `Retry-After` header so that the client knows how long to wait before making a new request.\n- `500`: Boundary returns `500` if an error occurred that is not (directly) tied to invalid user input. If a `500` is generated, information about the error is logged to Boundary's server log but is not generally provided to the client.\n- `503`: Boundary returns a `503` if it is unable to store a quota due to the API rate limit being exceeded. It includes the `Retry-After` header so that the client knows how long to wait before making a new request.\n## List pagination\nBoundary uses [API pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination) to support searching and filtering large lists of results efficiently.",
    "version": "0.20.0",
    "contact": {
      "name": "HashiCorp Boundary",
      "url": "https://www.boundaryproject.io/"
    },
    "license": {
      "name": "Business Source License 1.1",
      "url": "https://github.com/hashicorp/boundary/blob/main/LICENSE"
    }
  },
  "tags": [
    {
      "name": "Account service",
      "description": "The account service exposes endpoints for interacting with accounts in Boundary. Accounts belong to an auth method and are associated with users.",
      "externalDocs": {
        "description": "Read about accounts in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/accounts"
      }
    },
    {
      "name": "Alias service",
      "description": "The alias service exposes endpoints for interacting with aliases in Boundary. An alias acts as a reference or an alternate ID for an existing entity within the Boundary access control system. It provides a way to simplify access control by offering a more user-friendly or descriptive identifier for an entity."
    },
    {
      "name": "Auth method service",
      "description": "The auth method service exposes endpoints for interacting with auth methods in Boundary. An auth method defines how users can authenticate themselves within the system. It acts as a bridge between Boundary and various external identity providers or authentication mechanisms.",
      "externalDocs": {
        "description": "Read about auth methods in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/auth-methods"
      }
    },
    {
      "name": "Auth token service",
      "description": "The auth token service provides the ability to manage and retrieve auth tokens. An auth token serves as a temporary credential issued to a user after successful authentication. It grants the user access to Boundary's resources and capabilities for a limited duration."
    },
    {
      "name": "Billing service",
      "description": "The billing service provides the usage data. It includes the active users in a given time period."
    },
    {
      "name": "Credential library service",
      "description": "The credential library service acts as a centralized repository for managing credentials used during sessions. It offers a secure and efficient way to store, rotate, and manage various the various types of credentials that are required for infrastructure access. The credential library service provides endpoints for interacting with credential libraries.",
      "externalDocs": {
        "description": "Read about credential libraries in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/credential-libraries"
      }
    },
    {
      "name": "Credential service",
      "description": "A credential is a data structure that contains one or more secrets that bind an identity to a set of permissions or capabilities on a host for a session. The credential service provides endpoints for managing credentials in Boundary. ",
      "externalDocs": {
        "description": "Read about credentials in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/credentials"
      }
    },
    {
      "name": "Credential store service",
      "description": "A credential store is a resource that can retrieve, store, and potentially generate credentials of differing types and differing access levels. The credential store service provides endpoints for managing credential stores in Boundary. ",
      "externalDocs": {
        "description": "Read about credential stores in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/credential-stores"
      }
    },
    {
      "name": "Group service",
      "description": "A group is a resource that represents a collection of users that can be treated equally for the purposes of access control. The group service provides endpoints for managing groups in Boundary. ",
      "externalDocs": {
        "description": "Read about groups in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/groups"
      }
    },
    {
      "name": "Host catalog service",
      "description": "A host catalog serves as a central repository for managing and organizing the target hosts or resources that Boundary can access and control. The host catalog service provides endpoints for managing host catalogs in Boundary.",
      "externalDocs": {
        "description": "Read about host catalogs in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/host-catalogs"
      }
    },
    {
      "name": "Host service",
      "description": "A host is a resource that represents a computing element with a network address that is reachable from a Boundary worker. The host service provides endpoints for managing hosts in Boundary.",
      "externalDocs": {
        "description": "Read about hosts in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/hosts"
      }
    },
    {
      "name": "Host set service",
      "description": "A host set is a resource that represents a collection of hosts that are considered equivalent for the purposes of access control. The host set service provides endpoints for managing host sets in Boundary.",
      "externalDocs": {
        "description": "Read about host sets in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/host-sets"
      }
    },
    {
      "name": "Managed group service",
      "description": "A managed group is a resource that represents a collection of accounts. The managed group service provides endpoints for creating, reading, updating, and deleting managed groups in Boundary.",
      "externalDocs": {
        "description": "Read about managed groups in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/managed-groups"
      }
    },
    {
      "name": "Policy service",
      "description": "The policy service provides endpoints that let you manage policies in Boundary. Policies are used to define rules for the lifecycle of session recordings.",
      "externalDocs": {
        "description": "Read about policies in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/storage-policy"
      }
    },
    {
      "name": "Role service",
      "description": "A role represents a collection of permissions that define what actions a user or service account can perform within the system. The role service provides endpoints that let you manage roles in Boundary.",
      "externalDocs": {
        "description": "Read about roles in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/roles"
      }
    },
    {
      "name": "Scope service",
      "description": "A scope acts as a permission Boundary modeled using the concept of a container. It creates a hierarchical structure that lets you organize your resources and manage access control within Boundary. The scope service provides endpoints to let you manage scopes in Boundary.",
      "externalDocs": {
        "description": "Read about scopes in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/scopes"
      }
    },
    {
      "name": "Session recording service",
      "description": "A session recording is a feature that enables administrators to record and play back user access sessions to target resources. It provides an audit trail of user activity and lets administrators monitor access. The session recording service provides endpoints that let you manage session recordings in Boundary.",
      "externalDocs": {
        "description": "Read about session recordings in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/session-recordings"
      }
    },
    {
      "name": "Session service",
      "description": "A session represents a temporary, authorized access connection between a user and a target resource. The session service provides endpoints that let you manage sessions in Boundary.",
      "externalDocs": {
        "description": "Read about sessions in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/sessions"
      }
    },
    {
      "name": "Storage bucket service",
      "description": "A storage bucket is an external storage location used to store recordings of user access sessions. The storage bucket service provides endpoints that let you manage storage buckets in Boundary.",
      "externalDocs": {
        "description": "Read about storage buckets in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/storage-buckets"
      }
    },
    {
      "name": "Target service",
      "description": "A target represents an endpoint or resource that users can access through Boundary sessions. The target service provides endpoints that let you manage targets in Boundary.",
      "externalDocs": {
        "description": "Read about targets in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/targets"
      }
    },
    {
      "name": "User service",
      "description": "A user can be a human individual or a service account that accesses resources. The user service provides endpoints that let you manage users in Boundary.",
      "externalDocs": {
        "description": "Read about users in the Boundary domain model",
        "url": "https://developer.hashicorp.com/boundary/docs/concepts/domain-model/users"
      }
    },
    {
      "name": "Worker service",
      "description": "A worker is a service that acts as a network proxy for Boundary sessions. It functions as a bridge between users and the target resources they need to access. The worker service provides endpoints that let you manage workers in Boundary."
    }
  ],
  "host": "your-boundary-hostname.com",
  "schemes": [
    "https",
    "http"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/v1/accounts": {
      "get": {
        "summary": "Lists all accounts in a specific auth method.",
        "operationId": "AccountService_ListAccounts",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListAccountsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "auth_method_id",
            "description": "The ID of the auth method whose accounts should be listed.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Account service"
        ]
      },
      "post": {
        "summary": "Creates a single account in the provided auth method.",
        "operationId": "AccountService_CreateAccount",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
            }
          }
        ],
        "tags": [
          "Account service"
        ]
      }
    },
    "/v1/accounts/{id}": {
      "get": {
        "summary": "Gets a single account based on the input ID",
        "operationId": "AccountService_GetAccount",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the account that should be retrieved.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Account service"
        ]
      },
      "delete": {
        "summary": "Deletes an account.",
        "operationId": "AccountService_DeleteAccount",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteAccountResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the account to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Account service"
        ]
      },
      "patch": {
        "summary": "Updates an account.",
        "operationId": "AccountService_UpdateAccount",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the account that should be updated.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "description": "A subset of the account that contains the fields to update.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
            }
          }
        ],
        "tags": [
          "Account service"
        ]
      }
    },
    "/v1/accounts/{id}:change-password": {
      "post": {
        "summary": "Sets the password for the provided account.",
        "operationId": "AccountService_ChangePassword",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the account for which the password should be changed.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.AccountService.ChangePasswordBody"
            }
          }
        ],
        "tags": [
          "Account service"
        ]
      }
    },
    "/v1/accounts/{id}:set-password": {
      "post": {
        "summary": "Sets the password for the provided account.",
        "operationId": "AccountService_SetPassword",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the account for which the password should be set.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.AccountService.SetPasswordBody"
            }
          }
        ],
        "tags": [
          "Account service"
        ]
      }
    },
    "/v1/aliases": {
      "get": {
        "summary": "Lists all Aliases in a specific Scope.",
        "operationId": "AliasService_ListAliases",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListAliasesResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "The ID of the scope in which to list aliases",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "Whether to recursively list aliases in the provided scope's child scopes.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Alias service"
        ]
      },
      "post": {
        "summary": "Creates a single Alias in the provided scope.",
        "operationId": "AliasService_CreateAlias",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
            }
          }
        ],
        "tags": [
          "Alias service"
        ]
      }
    },
    "/v1/aliases/{id}": {
      "get": {
        "summary": "Gets a single Alias.",
        "operationId": "AliasService_GetAlias",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the alias to retrieve.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Alias service"
        ]
      },
      "delete": {
        "summary": "Deletes an Alias.",
        "operationId": "AliasService_DeleteAlias",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteAliasResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the alias to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Alias service"
        ]
      },
      "patch": {
        "summary": "Updates an Alias.",
        "operationId": "AliasService_UpdateAlias",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the alias to update.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "description": "A subset of the alias that contains the fields to update.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
            }
          }
        ],
        "tags": [
          "Alias service"
        ]
      }
    },
    "/v1/auth-methods": {
      "get": {
        "summary": "Lists all auth methods.",
        "operationId": "AuthMethodService_ListAuthMethods",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListAuthMethodsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "The scope ID in which to list auth methods.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "Whether to recursively list auth methods in the provided scope's child scopes.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Auth method service"
        ]
      },
      "post": {
        "summary": "Creates a single auth method.",
        "operationId": "AuthMethodService_CreateAuthMethod",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
            }
          }
        ],
        "tags": [
          "Auth method service"
        ]
      }
    },
    "/v1/auth-methods/{auth_method_id}:authenticate": {
      "post": {
        "summary": "Authenticate a user to an scope and retrieve an authentication token.",
        "operationId": "AuthMethodService_Authenticate",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.AuthenticateResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "auth_method_id",
            "description": "The ID of the auth method in the system that should be used for authentication.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.AuthMethodService.AuthenticateBody"
            }
          }
        ],
        "tags": [
          "Auth method service"
        ]
      }
    },
    "/v1/auth-methods/{id}": {
      "get": {
        "summary": "Gets a single auth method.",
        "operationId": "AuthMethodService_GetAuthMethod",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "ID of the auth method being requested.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Auth method service"
        ]
      },
      "delete": {
        "summary": "Deletes an AuthMethod",
        "operationId": "AuthMethodService_DeleteAuthMethod",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteAuthMethodResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the auth method to delete.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Auth method service"
        ]
      },
      "patch": {
        "summary": "Updates an auth method.",
        "operationId": "AuthMethodService_UpdateAuthMethod",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the auth method that should be updated",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "description": "A subset of the auth method containing the fields to update.",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
            }
          }
        ],
        "tags": [
          "Auth method service"
        ]
      }
    },
    "/v1/auth-methods/{id}:change-state": {
      "post": {
        "summary": "Changes the state of an OIDC AuthMethod",
        "operationId": "AuthMethodService_ChangeState",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.AuthMethodService.ChangeStateBody"
            }
          }
        ],
        "tags": [
          "Auth method service"
        ]
      }
    },
    "/v1/auth-tokens": {
      "get": {
        "summary": "Lists all Auth Tokens.",
        "operationId": "AuthTokenService_ListAuthTokens",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListAuthTokensResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Auth token service"
        ]
      }
    },
    "/v1/auth-tokens/{id}": {
      "get": {
        "summary": "Gets a single Auth Token.",
        "operationId": "AuthTokenService_GetAuthToken",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.authtokens.v1.AuthToken"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Auth token service"
        ]
      },
      "delete": {
        "summary": "Deletes an Auth Token.",
        "operationId": "AuthTokenService_DeleteAuthToken",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteAuthTokenResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Auth token service"
        ]
      }
    },
    "/v1/billing:monthly-active-users": {
      "get": {
        "summary": "Returns monthly active users.",
        "operationId": "BillingService_MonthlyActiveUsers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.MonthlyActiveUsersResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "start_time",
            "description": "An optional start time of the billing period to query, in the format of YYYY-MM.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "end_time",
            "description": "An optional end time of the billing period to query, in the format of YYYY-MM.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Billing service"
        ]
      }
    },
    "/v1/credential-libraries": {
      "get": {
        "summary": "Lists all Credential Library.",
        "operationId": "CredentialLibraryService_ListCredentialLibraries",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListCredentialLibrariesResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "credential_store_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Credential library service"
        ]
      },
      "post": {
        "summary": "Creates a single Credential Library.",
        "operationId": "CredentialLibraryService_CreateCredentialLibrary",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
            }
          }
        ],
        "tags": [
          "Credential library service"
        ]
      }
    },
    "/v1/credential-libraries/{id}": {
      "get": {
        "summary": "Gets a single Credential Library.",
        "operationId": "CredentialLibraryService_GetCredentialLibrary",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credential library service"
        ]
      },
      "delete": {
        "summary": "Deletes a Credential Library",
        "operationId": "CredentialLibraryService_DeleteCredentialLibrary",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteCredentialLibraryResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credential library service"
        ]
      },
      "patch": {
        "summary": "Updates a Credential Library.",
        "operationId": "CredentialLibraryService_UpdateCredentialLibrary",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
            }
          }
        ],
        "tags": [
          "Credential library service"
        ]
      }
    },
    "/v1/credential-stores": {
      "get": {
        "summary": "Lists all Credential Stores.",
        "operationId": "CredentialStoreService_ListCredentialStores",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListCredentialStoresResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Credential store service"
        ]
      },
      "post": {
        "summary": "Creates a single Credential Store.",
        "operationId": "CredentialStoreService_CreateCredentialStore",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
            }
          }
        ],
        "tags": [
          "Credential store service"
        ]
      }
    },
    "/v1/credential-stores/{id}": {
      "get": {
        "summary": "Gets a single Credential Store.",
        "operationId": "CredentialStoreService_GetCredentialStore",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credential store service"
        ]
      },
      "delete": {
        "summary": "Deletes a CredentialStore",
        "operationId": "CredentialStoreService_DeleteCredentialStore",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteCredentialStoreResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credential store service"
        ]
      },
      "patch": {
        "summary": "Updates a Credential Store.",
        "operationId": "CredentialStoreService_UpdateCredentialStore",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
            }
          }
        ],
        "tags": [
          "Credential store service"
        ]
      }
    },
    "/v1/credentials": {
      "get": {
        "summary": "Lists all Credentials.",
        "operationId": "CredentialService_ListCredentials",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListCredentialsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "credential_store_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Credential service"
        ]
      },
      "post": {
        "summary": "Creates a single Credential.",
        "operationId": "CredentialService_CreateCredential",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
            }
          }
        ],
        "tags": [
          "Credential service"
        ]
      }
    },
    "/v1/credentials/{id}": {
      "get": {
        "summary": "Gets a single Credential.",
        "operationId": "CredentialService_GetCredential",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credential service"
        ]
      },
      "delete": {
        "summary": "Deletes a Credential",
        "operationId": "CredentialService_DeleteCredential",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteCredentialResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Credential service"
        ]
      },
      "patch": {
        "summary": "Updates a Credential.",
        "operationId": "CredentialService_UpdateCredential",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
            }
          }
        ],
        "tags": [
          "Credential service"
        ]
      }
    },
    "/v1/groups": {
      "get": {
        "summary": "Lists all Groups.",
        "operationId": "GroupService_ListGroups",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListGroupsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Group service"
        ]
      },
      "post": {
        "summary": "Creates a single Group.",
        "operationId": "GroupService_CreateGroup",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          }
        ],
        "tags": [
          "Group service"
        ]
      }
    },
    "/v1/groups/{id}": {
      "get": {
        "summary": "Gets a single Group.",
        "operationId": "GroupService_GetGroup",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Group service"
        ]
      },
      "delete": {
        "summary": "Deletes a Group.",
        "operationId": "GroupService_DeleteGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteGroupResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Group service"
        ]
      },
      "patch": {
        "summary": "Updates a Group.",
        "operationId": "GroupService_UpdateGroup",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          }
        ],
        "tags": [
          "Group service"
        ]
      }
    },
    "/v1/groups/{id}:add-members": {
      "post": {
        "summary": "Adds members to a Group.",
        "operationId": "GroupService_AddGroupMembers",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.GroupService.AddGroupMembersBody"
            }
          }
        ],
        "tags": [
          "Group service"
        ]
      }
    },
    "/v1/groups/{id}:remove-members": {
      "post": {
        "summary": "Removes the specified members from a Group.",
        "operationId": "GroupService_RemoveGroupMembers",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.GroupService.RemoveGroupMembersBody"
            }
          }
        ],
        "tags": [
          "Group service"
        ]
      }
    },
    "/v1/groups/{id}:set-members": {
      "post": {
        "summary": "Set a Group's members to exactly the list of provided in the request, removing any members that are not specified.",
        "operationId": "GroupService_SetGroupMembers",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.GroupService.SetGroupMembersBody"
            }
          }
        ],
        "tags": [
          "Group service"
        ]
      }
    },
    "/v1/host-catalogs": {
      "get": {
        "summary": "Gets a list of Host Catalogs.",
        "operationId": "HostCatalogService_ListHostCatalogs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListHostCatalogsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Host catalog service"
        ]
      },
      "post": {
        "summary": "Creates a Host Catalog",
        "operationId": "HostCatalogService_CreateHostCatalog",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
            }
          },
          {
            "name": "plugin_name",
            "description": "As an alternative to providing the plugin id in the provided HostCatalog,\nthis field can be used to lookup the plugin using its name.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Host catalog service"
        ]
      }
    },
    "/v1/host-catalogs/{id}": {
      "get": {
        "summary": "Gets a single Host Catalog.",
        "operationId": "HostCatalogService_GetHostCatalog",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Host catalog service"
        ]
      },
      "delete": {
        "summary": "Deletes a Host Catalog",
        "operationId": "HostCatalogService_DeleteHostCatalog",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteHostCatalogResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Host catalog service"
        ]
      },
      "patch": {
        "summary": "Updates a Host Catalog",
        "operationId": "HostCatalogService_UpdateHostCatalog",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
            }
          }
        ],
        "tags": [
          "Host catalog service"
        ]
      }
    },
    "/v1/host-sets": {
      "get": {
        "summary": "List all Host Sets under the specific Catalog.",
        "operationId": "HostSetService_ListHostSets",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListHostSetsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "host_catalog_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number..",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Host set service"
        ]
      },
      "post": {
        "summary": "Create a Host Set.",
        "operationId": "HostSetService_CreateHostSet",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          }
        ],
        "tags": [
          "Host set service"
        ]
      }
    },
    "/v1/host-sets/{id}": {
      "get": {
        "summary": "Get a single Host Set.",
        "operationId": "HostSetService_GetHostSet",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Host set service"
        ]
      },
      "delete": {
        "summary": "Delete a Host Set.",
        "operationId": "HostSetService_DeleteHostSet",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteHostSetResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Host set service"
        ]
      },
      "patch": {
        "summary": "Update a Host Set.",
        "operationId": "HostSetService_UpdateHostSet",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          }
        ],
        "tags": [
          "Host set service"
        ]
      }
    },
    "/v1/host-sets/{id}:add-hosts": {
      "post": {
        "summary": "Adds existing Hosts to a Host Set.",
        "operationId": "HostSetService_AddHostSetHosts",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.HostSetService.AddHostSetHostsBody"
            }
          }
        ],
        "tags": [
          "Host set service"
        ]
      }
    },
    "/v1/host-sets/{id}:remove-hosts": {
      "post": {
        "summary": "Removes Hosts from the Host Set.",
        "operationId": "HostSetService_RemoveHostSetHosts",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.HostSetService.RemoveHostSetHostsBody"
            }
          }
        ],
        "tags": [
          "Host set service"
        ]
      }
    },
    "/v1/host-sets/{id}:set-hosts": {
      "post": {
        "summary": "Sets the Hosts on the Host Set.",
        "operationId": "HostSetService_SetHostSetHosts",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.HostSetService.SetHostSetHostsBody"
            }
          }
        ],
        "tags": [
          "Host set service"
        ]
      }
    },
    "/v1/hosts": {
      "get": {
        "summary": "List all Hosts for the specified Catalog.",
        "operationId": "HostService_ListHosts",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListHostsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "host_catalog_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Host service"
        ]
      },
      "post": {
        "summary": "Create a single Host.",
        "operationId": "HostService_CreateHost",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
            }
          }
        ],
        "tags": [
          "Host service"
        ]
      }
    },
    "/v1/hosts/{id}": {
      "get": {
        "summary": "Gets a single Host.",
        "operationId": "HostService_GetHost",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Host service"
        ]
      },
      "delete": {
        "summary": "Delete a Host.",
        "operationId": "HostService_DeleteHost",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteHostResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Host service"
        ]
      },
      "patch": {
        "summary": "Update a Host.",
        "operationId": "HostService_UpdateHost",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
            }
          }
        ],
        "tags": [
          "Host service"
        ]
      }
    },
    "/v1/managed-groups": {
      "get": {
        "summary": "Lists all ManagedGroups in a specific Auth Method.",
        "operationId": "ManagedGroupService_ListManagedGroups",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListManagedGroupsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "auth_method_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number..",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Managed group service"
        ]
      },
      "post": {
        "summary": "Creates a single ManagedGroup in the provided Auth Method.",
        "operationId": "ManagedGroupService_CreateManagedGroup",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
            }
          }
        ],
        "tags": [
          "Managed group service"
        ]
      }
    },
    "/v1/managed-groups/{id}": {
      "get": {
        "summary": "Gets a single ManagedGroup.",
        "operationId": "ManagedGroupService_GetManagedGroup",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Managed group service"
        ]
      },
      "delete": {
        "summary": "Deletes a ManagedGroup.",
        "operationId": "ManagedGroupService_DeleteManagedGroup",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteManagedGroupResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Managed group service"
        ]
      },
      "patch": {
        "summary": "Updates a ManagedGroup.",
        "operationId": "ManagedGroupService_UpdateManagedGroup",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
            }
          }
        ],
        "tags": [
          "Managed group service"
        ]
      }
    },
    "/v1/policies": {
      "get": {
        "summary": "Lists all policies.",
        "operationId": "PolicyService_ListPolicies",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListPoliciesResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number..",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Policy service"
        ]
      },
      "post": {
        "summary": "Creates a single policy.",
        "operationId": "PolicyService_CreatePolicy",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
            }
          }
        ],
        "tags": [
          "Policy service"
        ]
      }
    },
    "/v1/policies/{id}": {
      "get": {
        "summary": "Gets a single policy with the given id.",
        "operationId": "PolicyService_GetPolicy",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Policy service"
        ]
      },
      "delete": {
        "summary": "Deletes an existing policy.",
        "operationId": "PolicyService_DeletePolicy",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeletePolicyResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Policy service"
        ]
      },
      "patch": {
        "summary": "Updates an existing policy.",
        "operationId": "PolicyService_UpdatePolicy",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
            }
          }
        ],
        "tags": [
          "Policy service"
        ]
      }
    },
    "/v1/roles": {
      "get": {
        "summary": "Lists all Roles.",
        "operationId": "RoleService_ListRoles",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListRolesResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number..",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Role service"
        ]
      },
      "post": {
        "summary": "Creates a single Role.",
        "operationId": "RoleService_CreateRole",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}": {
      "get": {
        "summary": "Gets a single Role.",
        "operationId": "RoleService_GetRole",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Role service"
        ]
      },
      "delete": {
        "summary": "Deletes a Role.",
        "operationId": "RoleService_DeleteRole",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteRoleResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Role service"
        ]
      },
      "patch": {
        "summary": "Updates a Role.",
        "operationId": "RoleService_UpdateRole",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:add-grant-scopes": {
      "post": {
        "summary": "Adds grant scopes to a Role",
        "operationId": "RoleService_AddRoleGrantScopes",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.AddRoleGrantScopesBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:add-grants": {
      "post": {
        "summary": "Adds grants to a Role",
        "operationId": "RoleService_AddRoleGrants",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.AddRoleGrantsBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:add-principals": {
      "post": {
        "summary": "Adds Users and/or Groups to a Role.",
        "operationId": "RoleService_AddRolePrincipals",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.AddRolePrincipalsBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:remove-grant-scopes": {
      "post": {
        "summary": "Removes grant scopes from a Role.",
        "operationId": "RoleService_RemoveRoleGrantScopes",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.RemoveRoleGrantScopesBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:remove-grants": {
      "post": {
        "summary": "Removes grants from a Role.",
        "operationId": "RoleService_RemoveRoleGrants",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.RemoveRoleGrantsBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:remove-principals": {
      "post": {
        "summary": "Removes the specified Users and/or Groups from a Role.",
        "operationId": "RoleService_RemoveRolePrincipals",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.RemoveRolePrincipalsBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:set-grant-scopes": {
      "post": {
        "summary": "Set grant scopes for a Role, removing any grant scopes that are not specified in the request.",
        "operationId": "RoleService_SetRoleGrantScopes",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.SetRoleGrantScopesBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:set-grants": {
      "post": {
        "summary": "Set grants for a Role, removing any grants that are not specified in the request.",
        "operationId": "RoleService_SetRoleGrants",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.SetRoleGrantsBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/roles/{id}:set-principals": {
      "post": {
        "summary": "Set Users and/or Groups to a Role, removing any principals that are not specified in the request.",
        "operationId": "RoleService_SetRolePrincipals",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RoleService.SetRolePrincipalsBody"
            }
          }
        ],
        "tags": [
          "Role service"
        ]
      }
    },
    "/v1/scopes": {
      "get": {
        "summary": "Lists all Scopes within the Scope provided in the request.",
        "operationId": "ScopeService_ListScopes",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListScopesResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token used to continue an existing iteration or\nrequest updated items. If paginating, use this token in the\nnext list request.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Scope service"
        ]
      },
      "post": {
        "summary": "Creates a single Scope.",
        "operationId": "ScopeService_CreateScope",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
            }
          },
          {
            "name": "skip_admin_role_creation",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "skip_default_role_creation",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/scopes/{id}": {
      "get": {
        "summary": "Gets a single Scope.",
        "operationId": "ScopeService_GetScope",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Scope service"
        ]
      },
      "delete": {
        "summary": "Deletes a Scope.",
        "operationId": "ScopeService_DeleteScope",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteScopeResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Scope service"
        ]
      },
      "patch": {
        "summary": "Updates a Scope.",
        "operationId": "ScopeService_UpdateScope",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
            }
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/scopes/{id}:attach-storage-policy": {
      "post": {
        "summary": "Attaches the specified Storage Policy to the Scope.",
        "operationId": "ScopeService_AttachStoragePolicy",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ScopeService.AttachStoragePolicyBody"
            }
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/scopes/{id}:detach-storage-policy": {
      "post": {
        "summary": "Detaches the specified Storage Policy from the Scope.",
        "operationId": "ScopeService_DetachStoragePolicy",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ScopeService.DetachStoragePolicyBody"
            }
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/scopes/{id}:list-keys": {
      "get": {
        "summary": "List all keys in a Scope.",
        "operationId": "ScopeService_ListKeys",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListKeysResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/scopes/{scope_id}:list-key-version-destruction-jobs": {
      "get": {
        "summary": "Lists all pending key version destruction jobs in a Scope.",
        "operationId": "ScopeService_ListKeyVersionDestructionJobs",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListKeyVersionDestructionJobsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/scopes:destroy-key-version": {
      "post": {
        "summary": "Destroy the specified key version in a Scope. This may start an asynchronous job that re-encrypts all data encrypted by the specified key version. Use GET /v1/scopes/{scope_id}:list-key-version-destruction-jobs to monitor pending destruction jobs.",
        "operationId": "ScopeService_DestroyKeyVersion",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DestroyKeyVersionResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DestroyKeyVersionRequest"
            }
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/scopes:rotate-keys": {
      "post": {
        "summary": "Rotate all keys in a Scope.",
        "operationId": "ScopeService_RotateKeys",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RotateKeysResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.RotateKeysRequest"
            }
          }
        ],
        "tags": [
          "Scope service"
        ]
      }
    },
    "/v1/session-recordings": {
      "get": {
        "summary": "ListSessionRecordings lists all Session recordings. Session recordings are ordered by start_time descending (most recently started first).",
        "operationId": "SessionRecordingService_ListSessionRecordings",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListSessionRecordingsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "The scope in which to list session recordings.\nMust be set unless recursive is set.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "Whether to recurse into child scopes when listing.\nIf set and scope_id is empty, shows session recordings in\nall scopes the caller has access to.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Session recording service"
        ]
      }
    },
    "/v1/session-recordings/{id}": {
      "get": {
        "summary": "GetSessionRecording returns a stored Session recording if present. The provided request must include the Session recording ID for the Session recording being retrieved, or the ID of the Session that was recorded. If that ID is missing, malformed or reference a non existing resource, an error is returned.",
        "operationId": "SessionRecordingService_GetSessionRecording",
        "responses": {
          "200": {
            "description": "The requested recording.",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.SessionRecording"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the Session recording, or the ID of the Session that was recorded.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Session recording service"
        ]
      },
      "delete": {
        "summary": "Deletes a Session Recording",
        "operationId": "SessionRecordingService_DeleteSessionRecording",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteSessionRecordingResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Session recording service"
        ]
      }
    },
    "/v1/session-recordings/{id}:download": {
      "get": {
        "summary": "Download returns the contents of the specified resource in the specified mime type. Supports both Session ID and Session recording ID for looking up a Session recording. Supports both Connection ID and Connection recording ID to look up a Connection recording. A Channel recording ID is required to look up a Channel recording. The only supported mime type is \"application/x-asciicast\".",
        "operationId": "SessionRecordingService_Download",
        "responses": {
          "200": {
            "description": "A successful response.(streaming responses)",
            "schema": {
              "type": "string",
              "format": "binary",
              "properties": {},
              "title": "Free form byte stream"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the resource that should be downloaded. Supported types:\n  - Session ID and Session recording ID for Session recordings\n  - Connection ID and Connection recording ID for Connection recordings\n  - Channel recording ID for Channel recordings",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "mime_type",
            "description": "The format of the response. The only supported mime type is \"application/x-asciicast\".\nDefaults to \"application/x-asciicast\" if not set.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Session recording service"
        ]
      }
    },
    "/v1/session-recordings/{id}:reapply-storage-policy": {
      "post": {
        "summary": "ReApplyStoragePolicy will recalculate the resultant set of policy and apply the result to the given session recording.",
        "operationId": "SessionRecordingService_ReApplyStoragePolicy",
        "responses": {
          "200": {
            "description": "The requested recording.",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.SessionRecording"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The Session Recording ID",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Session recording service"
        ]
      }
    },
    "/v1/sessions": {
      "get": {
        "summary": "Lists all Sessions.",
        "operationId": "SessionService_ListSessions",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListSessionsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "include_terminated",
            "description": "Deprecated. Should be removed in 0.18.0 since pagination removes the need\nfor the optimization that this provided.\nBy default only non-terminated (i.e. pending, active, canceling) are returned.\nSet this option to include terminated sessions as well.  If not set paginated\nresponses may not include terminated sessions either in the response or in\nthe removed_ids.",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number..",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Session service"
        ]
      }
    },
    "/v1/sessions/{id}": {
      "get": {
        "summary": "Gets a single Session.",
        "operationId": "SessionService_GetSession",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.sessions.v1.Session"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Session service"
        ]
      }
    },
    "/v1/sessions/{id}:cancel": {
      "post": {
        "summary": "Cancels a Session.",
        "operationId": "SessionService_CancelSession",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.sessions.v1.Session"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.SessionService.CancelSessionBody"
            }
          }
        ],
        "tags": [
          "Session service"
        ]
      }
    },
    "/v1/storage-buckets": {
      "get": {
        "summary": "Gets a list of Storage Buckets.",
        "operationId": "StorageBucketService_ListStorageBuckets",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListStorageBucketsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf you do not set a page size, Boundary uses the configured default page size.\nIf the page_size is greater than the default page size configured,\nBoundary truncates the page size to this number.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Storage bucket service"
        ]
      },
      "post": {
        "summary": "Creates a Storage Bucket",
        "operationId": "StorageBucketService_CreateStorageBucket",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
            }
          },
          {
            "name": "plugin_name",
            "description": "As an alternative to providing the plugin id in the provided StorageBucket,\nthis field can be used to lookup the plugin using its name.",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Storage bucket service"
        ]
      }
    },
    "/v1/storage-buckets/{id}": {
      "get": {
        "summary": "Gets a single Storage Bucket.",
        "operationId": "StorageBucketService_GetStorageBucket",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Storage bucket service"
        ]
      },
      "delete": {
        "summary": "Deletes a Storage Bucket",
        "operationId": "StorageBucketService_DeleteStorageBucket",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteStorageBucketResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Storage bucket service"
        ]
      },
      "patch": {
        "summary": "Updates a Storage Bucket",
        "operationId": "StorageBucketService_UpdateStorageBucket",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
            }
          }
        ],
        "tags": [
          "Storage bucket service"
        ]
      }
    },
    "/v1/targets": {
      "get": {
        "summary": "Lists all Targets.",
        "operationId": "TargetService_ListTargets",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListTargetsResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "You can specify that the filter should only return items that match.\nRefer to [filter expressions](https://developer.hashicorp.com/boundary/docs/concepts/filtering) for more information.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number..",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "Target service"
        ]
      },
      "post": {
        "summary": "Creates a single Target.",
        "operationId": "TargetService_CreateTarget",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}": {
      "get": {
        "summary": "Gets a single Target.",
        "operationId": "TargetService_GetTarget",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Target service"
        ]
      },
      "delete": {
        "summary": "Deletes a Target.",
        "operationId": "TargetService_DeleteTarget",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteTargetResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Target service"
        ]
      },
      "patch": {
        "summary": "Updates a Target.",
        "operationId": "TargetService_UpdateTarget",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}:add-credential-sources": {
      "post": {
        "summary": "Adds existing Credential Sources to a Target.",
        "operationId": "TargetService_AddTargetCredentialSources",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.TargetService.AddTargetCredentialSourcesBody"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}:add-host-sources": {
      "post": {
        "summary": "Adds existing Host Sources to a Target. Cannot be used on targets that have their address field set.",
        "operationId": "TargetService_AddTargetHostSources",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.TargetService.AddTargetHostSourcesBody"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}:authorize-session": {
      "post": {
        "summary": "Authorizes a Session.",
        "operationId": "TargetService_AuthorizeSession",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.SessionAuthorization"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "The ID of the target. Required unless some combination of scope_id/scope_name and name are set.",
            "in": "path",
            "required": true,
            "type": "string",
            "pattern": ".+"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.TargetService.AuthorizeSessionBody"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}:remove-credential-sources": {
      "post": {
        "summary": "Removes Credential Sources from the Target.",
        "operationId": "TargetService_RemoveTargetCredentialSources",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.TargetService.RemoveTargetCredentialSourcesBody"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}:remove-host-sources": {
      "post": {
        "summary": "Removes Host Sources from the Target.",
        "operationId": "TargetService_RemoveTargetHostSources",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.TargetService.RemoveTargetHostSourcesBody"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}:set-credential-sources": {
      "post": {
        "summary": "Sets the Credential Sources on the Target.",
        "operationId": "TargetService_SetTargetCredentialSources",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.TargetService.SetTargetCredentialSourcesBody"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/targets/{id}:set-host-sources": {
      "post": {
        "summary": "Sources the Host Sources on the Target. Cannot be used on targets that have their address field set.",
        "operationId": "TargetService_SetTargetHostSources",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.TargetService.SetTargetHostSourcesBody"
            }
          }
        ],
        "tags": [
          "Target service"
        ]
      }
    },
    "/v1/users": {
      "get": {
        "summary": "Lists all Users.",
        "operationId": "UserService_ListUsers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListUsersResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token that Boundary uses to continue an existing iteration or\nrequest updated items. If you do not specify a token, pagination\nstarts from the beginning. To learn more about list pagination\nin Boundary, refer to [list pagination](https://developer.hashicorp.com/boundary/docs/api-clients/api/pagination).",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nthe page size will be truncated to this number..",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "User service"
        ]
      },
      "post": {
        "summary": "Creates a single User.",
        "operationId": "UserService_CreateUser",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          }
        ],
        "tags": [
          "User service"
        ]
      }
    },
    "/v1/users/{id}": {
      "get": {
        "summary": "Gets a single User.",
        "operationId": "UserService_GetUser",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "User service"
        ]
      },
      "delete": {
        "summary": "Deletes a User.",
        "operationId": "UserService_DeleteUser",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteUserResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "User service"
        ]
      },
      "patch": {
        "summary": "Updates a User.",
        "operationId": "UserService_UpdateUser",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          }
        ],
        "tags": [
          "User service"
        ]
      }
    },
    "/v1/users/{id}:add-accounts": {
      "post": {
        "summary": "Associates an Account to a User.",
        "operationId": "UserService_AddUserAccounts",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.UserService.AddUserAccountsBody"
            }
          }
        ],
        "tags": [
          "User service"
        ]
      }
    },
    "/v1/users/{id}:list-resolvable-aliases": {
      "get": {
        "summary": "Lists all Aliases which point to a resource for which the requester has some permission.",
        "operationId": "UserService_ListResolvableAliases",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListResolvableAliasesResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "list_token",
            "description": "An opaque token used to continue an existing iteration or\nrequest updated items. If not specified, pagination\nwill start from the beginning.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "page_size",
            "description": "The maximum size of a page in this iteration.\nIf unset, the default page size configured will be used.\nIf the page_size is greater than the default page configured,\nan error will be returned.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "tags": [
          "User service"
        ]
      }
    },
    "/v1/users/{id}:remove-accounts": {
      "post": {
        "summary": "Removes the specified Accounts from being associated with the provided User.",
        "operationId": "UserService_RemoveUserAccounts",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.UserService.RemoveUserAccountsBody"
            }
          }
        ],
        "tags": [
          "User service"
        ]
      }
    },
    "/v1/users/{id}:set-accounts": {
      "post": {
        "summary": "Set the Accounts associated to the User to exactly the list of provided in the request, removing any Accounts that are not specified.",
        "operationId": "UserService_SetUserAccounts",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.users.v1.User"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.UserService.SetUserAccountsBody"
            }
          }
        ],
        "tags": [
          "User service"
        ]
      }
    },
    "/v1/workers": {
      "get": {
        "summary": "Lists all Workers.",
        "operationId": "WorkerService_ListWorkers",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.ListWorkersResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "recursive",
            "description": "",
            "in": "query",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "filter",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers/{id}": {
      "get": {
        "summary": "Gets a single Worker.",
        "operationId": "WorkerService_GetWorker",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Worker service"
        ]
      },
      "delete": {
        "summary": "Deletes a Worker.",
        "operationId": "WorkerService_DeleteWorker",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.DeleteWorkerResponse"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Worker service"
        ]
      },
      "patch": {
        "summary": "Updates a Worker.",
        "operationId": "WorkerService_UpdateWorker",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers/{id}:add-worker-tags": {
      "post": {
        "summary": "Adds api tags to an existing Worker.",
        "operationId": "WorkerService_AddWorkerTags",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.WorkerService.AddWorkerTagsBody"
            }
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers/{id}:remove-worker-tags": {
      "post": {
        "summary": "Removes api tags from an existing Worker.",
        "operationId": "WorkerService_RemoveWorkerTags",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.WorkerService.RemoveWorkerTagsBody"
            }
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers/{id}:set-worker-tags": {
      "post": {
        "summary": "Sets api tags for an existing Worker.",
        "operationId": "WorkerService_SetWorkerTags",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "description": "",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.services.v1.WorkerService.SetWorkerTagsBody"
            }
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers:create:controller-led": {
      "post": {
        "summary": "Creates a single Worker.",
        "operationId": "WorkerService_CreateControllerLed",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers:create:worker-led": {
      "post": {
        "summary": "Creates a single Worker.",
        "operationId": "WorkerService_CreateWorkerLed",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
            }
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers:read-certificate-authority": {
      "get": {
        "summary": "Retrieves root certificates used for worker authentication.",
        "operationId": "WorkerService_ReadCertificateAuthority",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.CertificateAuthority"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    },
    "/v1/workers:reinitialize-certificate-authority": {
      "post": {
        "summary": "Reinitializes root certificates used for worker authentication.",
        "operationId": "WorkerService_ReinitializeCertificateAuthority",
        "responses": {
          "200": {
            "description": "",
            "schema": {
              "$ref": "#/definitions/controller.api.resources.workers.v1.CertificateAuthority"
            }
          },
          "default": {
            "description": "Returned when there is an error processing the request.",
            "schema": {
              "$ref": "#/definitions/controller.api.v1.Error"
            }
          }
        },
        "parameters": [
          {
            "name": "scope_id",
            "description": "",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Worker service"
        ]
      }
    }
  },
  "definitions": {
    "controller.api.resources.accounts.v1.Account": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the account.",
          "readOnly": true
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Scope information for the account.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation fails if the version does not match the latest known good version.\nVersion is not required when you create an account."
        },
        "type": {
          "type": "string",
          "description": "The type of this account. If you do not set an account type, Boundary infers it from the type of the auth method."
        },
        "auth_method_id": {
          "type": "string",
          "description": "The ID of the auth method that is associated with this account."
        },
        "attributes": {
          "type": "object",
          "example": {
            "login_name": "login_name"
          },
          "description": "The attributes that are applicable for the specific account type. The schema of this field depends on the type of the auth method that you create the account in.\nFor password auth methods, the parameters are:\n```json\n{\n  \"login_name\": \"login_name\",\n  \"password\": \"password\"\n}\n```\nFor OIDC auth methods, the parameters are:\n```json\n{\n  \"issuer\": \"issuer\",\n  \"subject\": \"subject\",\n  \"full_name\": \"full_name\",\n  \"email\": \"email\",\n  \"token_claims\": {},\n  \"userinfo_claims\": {}\n}\n```\nFor LDAP auth methods, the parameters are:\n```json\n{\n  \"login_name\": \"login_name\",\n  \"full_name\": \"full_name\",\n  \"email\": \"email\",\n  \"dn\": \"dn\",\n  \"member_of_groups\": [\"member_of_groups\"]\n}\n```\n"
        },
        "managed_group_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "",
          "title": "Indicates the IDs of the managed groups that currently contain this account",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "Account contains all fields related to an account resource"
    },
    "controller.api.resources.aliases.v1.Alias": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the alias.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the scope of which this alias is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Scope information for this alias.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional user-set name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set descripton for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation fails if the version does not match the latest known good version.\nVersion is not required when you create an alias."
        },
        "value": {
          "type": "string",
          "description": "Value of the alias. This is the value referenced by the user that\nis resolved to the destination id."
        },
        "destination_id": {
          "type": "string",
          "description": "destination_id is the id of the resource that this alias points to."
        },
        "type": {
          "type": "string",
          "description": "type is the type of the alias."
        },
        "attributes": {
          "type": "object",
          "example": {
            "authorize_session_arguments": {
              "host_id": "host_id"
            }
          },
          "description": "The attributes that are applicable for the specific alias type. The schema of this field depends on the type of resource that you create the alias for.\nFor target aliases, the parameters are:\n```json\n{\n  \"authorize_session_arguments\": {\"host_id\":\"host_id\"}\n}\n```\n"
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "Alias contains all fields related to an alias resource"
    },
    "controller.api.resources.authmethods.v1.AuthMethod": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the auth method.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope of which this auth method is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Scope information for this Auth method.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version.\nVersion is not required when you create an auth method."
        },
        "type": {
          "type": "string",
          "description": "The auth method type."
        },
        "attributes": {
          "type": "object",
          "example": {
            "min_login_name_length": 10,
            "min_password_length": 16
          },
          "description": "The attributes that are applicable for the specific auth method type. The schema of this field depends on the type of the auth method that you create want to create.\nFor password auth methods, the parameters are:\n```json\n{\n  \"min_login_name_length\": \"min_login_name_length\",\n  \"min_password_length\": \"min_password_length\"\n}\n```\nFor OIDC auth methods, the parameters are:\n```json\n{\n  \"issuer\": \"issuer\",\n  \"client_id\": \"client_id\",\n  \"client_secret\": \"client_secret\",\n  \"max_age\": 3600,\n  \"signing_algorithms\": [],\n  \"api_url_prefix\": \"api_url_prefix\",\n  \"idp_ca_certs\": [],\n  \"allowed_audiences\": [],\n  \"claims_scopes\": [],\n  \"account_claim_maps\": [],\n  \"disable_discovered_config_validation\": false,\n  \"prompts\": []\n}\n```\nFor LDAP auth methods, the parameters are:\n```json\n{\n  \"start_tls\": false,\n  \"insecure_tls\": false,\n  \"discover_dn\": false,\n  \"anon_group_search\": false,\n  \"upn_domain\": \"upn_domain\",\n  \"urls\": [],\n  \"user_dn\": \"user_dn\",\n  \"user_attr\": \"user_attr\",\n  \"user_filter\": \"user_filter\",\n  \"enable_groups\": false,\n  \"group_dn\": \"group_dn\",\n  \"group_attr\": \"group_attr\",\n  \"group_filter\": \"group_filter\",\n  \"certificates\": [],\n  \"client_certificate\": \"client_certificate\",\n  \"client_certificate_key\": \"client_certificate_key\",\n  \"bind_dn\": \"bind_dn\",\n  \"bind_password\": \"bind_password\",\n  \"use_token_groups\": false,\n  \"account_attribute_maps\": [],\n  \"maximum_page_size\": 1000,\n  \"dereference_aliases\": \"never\"\n}\n```\n"
        },
        "is_primary": {
          "type": "boolean",
          "description": "Whether this auth method is the primary auth method for it's scope.\nTo change this value update the primary_auth_method_id field on the scope.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The available actions on this resource for this user.",
          "readOnly": true
        },
        "authorized_collection_actions": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "The authorized actions for the scope's collections.",
          "readOnly": true
        }
      },
      "title": "AuthMethod contains all fields related to an auth method resource"
    },
    "controller.api.resources.authtokens.v1.AuthToken": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Auth Token.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The Scope in which this Auth Token was generated."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "token": {
          "type": "string",
          "description": "Output only. The token value, which will only be populated after authentication and is only ever visible to the end user whose login request resulted in this Auth Token being created.",
          "readOnly": true
        },
        "user_id": {
          "type": "string",
          "description": "Output only. The ID of the User associated with this Auth Token.",
          "readOnly": true
        },
        "auth_method_id": {
          "type": "string",
          "description": "Output only. The ID of the Auth Method associated with this Auth Token.",
          "readOnly": true
        },
        "account_id": {
          "type": "string",
          "description": "Output only. The ID of the Account associated with this Auth Token.",
          "readOnly": true
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "approximate_last_used_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The approximate time this Auth Token was last used.",
          "readOnly": true
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this Auth Token expires.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "AuthToken contains all fields related to an Auth Token resource"
    },
    "controller.api.resources.billing.v1.ActiveUsers": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64",
          "description": "Output only. The number of active users between the start time and end time.",
          "readOnly": true
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The start time of the active users count, inclusive.",
          "readOnly": true
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The end time of the active users count, exclusive.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.credentiallibraries.v1.CredentialLibrary": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Credential Library.",
          "readOnly": true
        },
        "credential_store_id": {
          "type": "string",
          "description": "The ID of the Credential Store of which this Credential Library is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this Credential Library.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The Credential Library type."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Credential Library type."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        },
        "credential_type": {
          "type": "string",
          "description": "",
          "title": "The type of credential this library will issue, defaults to Unspecified"
        },
        "credential_mapping_overrides": {
          "type": "object",
          "title": "The credential mapping overrides"
        }
      },
      "title": "CredentialLibrary contains all fields related to an Credential Library resource"
    },
    "controller.api.resources.credentials.v1.Credential": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Credential.",
          "readOnly": true
        },
        "credential_store_id": {
          "type": "string",
          "description": "The ID of the Credential Store of which this Credential is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this Credential.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The Credential type."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Credential type."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "Credential contains all fields related to an Credential resource"
    },
    "controller.api.resources.credentialstores.v1.CredentialStore": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Credential Store.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope of which this Credential Store is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this Credential Store.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The Credential Store type."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Credential Store type."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        },
        "authorized_collection_actions": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "Output only. The authorized actions for the scope's collections.",
          "readOnly": true
        }
      },
      "title": "CredentialStore contains all fields related to an Credential Store resource"
    },
    "controller.api.resources.groups.v1.Group": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Group.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the scope of which this Group is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this Group.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set descripton for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "member_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Contains the list of member IDs in this Group.",
          "readOnly": true
        },
        "members": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.groups.v1.Member"
          },
          "description": "Output only. The members of this Group.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "Group contains all fields related to a Group resource"
    },
    "controller.api.resources.groups.v1.Member": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the member.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "Output only. The Scope ID of the member.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.hostcatalogs.v1.HostCatalog": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the host.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope of which this Host Catalog is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "plugin_id": {
          "type": "string",
          "description": "The ID of the plugin of which this catalog is created."
        },
        "plugin": {
          "$ref": "#/definitions/controller.api.resources.plugins.v1.PluginInfo",
          "description": "Output only. Plugin information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The type of Host Catalog."
        },
        "attributes": {
          "type": "object",
          "description": "Attributes specific to the catalog type."
        },
        "secrets": {
          "type": "object",
          "description": "Secrets specific to the catalog type. These are never output."
        },
        "secrets_hmac": {
          "type": "string",
          "description": "Output only. The HMAC of the last secrets supplied via the API, if any.",
          "readOnly": true
        },
        "worker_filter": {
          "type": "string",
          "description": "Optional worker filter for plugin-subtype host catalogs. Boundary Enterprise only."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        },
        "authorized_collection_actions": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "Output only. The authorized actions for the scope's collections.",
          "readOnly": true
        }
      },
      "title": "HostCatalog manages Hosts and Host Sets"
    },
    "controller.api.resources.hosts.v1.Host": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Host.",
          "readOnly": true
        },
        "host_catalog_id": {
          "type": "string",
          "description": "The Host Catalog of which this Host is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "plugin": {
          "$ref": "#/definitions/controller.api.resources.plugins.v1.PluginInfo",
          "description": "Output only. Plugin information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The type of the resource."
        },
        "host_set_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. A list of Host Sets containing this Host.",
          "readOnly": true
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable to the specific Host type."
        },
        "ip_addresses": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only.  The list of ip addresses associated with this host.",
          "readOnly": true
        },
        "dns_names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only.  The list of dns addresses associated with this host.",
          "readOnly": true
        },
        "external_id": {
          "type": "string",
          "description": "Output only. The external ID of the host, if any.",
          "readOnly": true
        },
        "external_name": {
          "type": "string",
          "description": "Output only. Refers to the name for a given host provided by the plugin enabled backing service.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "Host contains all fields related to a Host resource"
    },
    "controller.api.resources.hostsets.v1.HostSet": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Host Set.",
          "readOnly": true
        },
        "host_catalog_id": {
          "type": "string",
          "description": "The Host Catalog of which this Host Set is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "plugin": {
          "$ref": "#/definitions/controller.api.resources.plugins.v1.PluginInfo",
          "description": "Output only. Plugin information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The type of the Host Set."
        },
        "host_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. A list of Hosts in this Host Set.",
          "readOnly": true
        },
        "preferred_endpoints": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "multiple possible endpoints for a host. Preferences are specified by\n\"cidr:\u003cvalid IPv4/6 CIDR\u003e\" or \"dns:\u003cglobbed name\u003e\", specifying which IP\naddress or DNS name out of a host's available possibilities should be\npreferred. If no preferences are specified, a value will be chosen from\namong all avialable values using a built-in priority order. May not be\nvalid for all plugin types."
        },
        "sync_interval_seconds": {
          "type": "integer",
          "format": "int32",
          "description": "An interger number of seconds indicating the amount of time that should\nelapse between syncs of the host set. The interval will be applied to the\nend of the previous sync operation, not the start. Setting to -1 will\ndisable syncing for that host set; setting to zero will cause the set to\nuse Boundary's default. The default may change between releases. May not\nbe valid for all plugin types."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Host Set type."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "HostSet is a collection of Hosts created and managed by a Host Catalog"
    },
    "controller.api.resources.managedgroups.v1.ManagedGroup": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the ManagedGroup.",
          "readOnly": true
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for the ManagedGroup.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The type of this ManagedGroup."
        },
        "auth_method_id": {
          "type": "string",
          "description": "The ID of the Auth Method that is associated with this ManagedGroup."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific ManagedGroup type."
        },
        "member_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The IDs of the current set of members (accounts) that are associated with this ManagedGroup.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "ManagedGroup contains all fields related to an ManagedGroup resource"
    },
    "controller.api.resources.plugins.v1.PluginInfo": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Plugin.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Output only. The name of the plugin resource in boundary, if any.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "Output only. The description of the plugin in boundary, if any.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.policies.v1.Policy": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The id of the storage policy.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The scope id of this policy. This must be defined for policy creation, but\nis otherwise output only."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "The policy's type."
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure\nthis resource has not changed. The mutation will fail if the version does\nnot match the latest known good version."
        },
        "attributes": {
          "type": "object"
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.roles.v1.Grant": {
      "type": "object",
      "properties": {
        "raw": {
          "type": "string",
          "description": "Output only. The original user-supplied string.",
          "readOnly": true
        },
        "canonical": {
          "type": "string",
          "description": "Output only. The canonically-formatted string.",
          "readOnly": true
        },
        "json": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.GrantJson",
          "description": "Output only. The JSON representation of the grant.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.roles.v1.GrantJson": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID, if set.\nDeprecated: use \"ids\" instead.",
          "readOnly": true
        },
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The IDs, if set.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Output only. The type, if set.",
          "readOnly": true
        },
        "actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The actions.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.roles.v1.Principal": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the principal.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Output only. The type of the principal.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "Output only. The Scope of the principal.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.roles.v1.Role": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Role.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope containing this Role."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "grant_scope_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The IDs of Scopes the grants will apply to. This can include\nthe role's own scope ID, or \"this\" for the same behavior; specific IDs of\nscopes that are children of the role's scope; the value \"children\" to match\nall direct child scopes of the role's scope; or the value \"descendants\" to\nmatch all descendant scopes (e.g. child scopes, children of child scopes;\nonly valid at \"global\" scope since it is the only one with children of\nchildren).",
          "readOnly": true
        },
        "principal_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The IDs (only) of principals that are assigned to this role.",
          "readOnly": true
        },
        "principals": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.roles.v1.Principal"
          },
          "description": "Output only. The principals that are assigned to this role.",
          "readOnly": true
        },
        "grant_strings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The grants that this role provides for its principals.",
          "readOnly": true
        },
        "grants": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.roles.v1.Grant"
          },
          "description": "Output only. The parsed grant information.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "Role contains all fields related to a Role resource"
    },
    "controller.api.resources.scopes.v1.Key": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Key."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Scope information for this resource."
        },
        "purpose": {
          "type": "string",
          "description": "The purpose of the Key."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this Key was created."
        },
        "type": {
          "type": "string",
          "description": "The type of the Key."
        },
        "versions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.scopes.v1.KeyVersion"
          },
          "description": "The versions of the key."
        }
      },
      "description": "Key contains all fields related to a Key in a Scope."
    },
    "controller.api.resources.scopes.v1.KeyVersion": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the key version."
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "The iteration of the Key that this version represents."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "When this version was created."
        }
      },
      "title": "KeyVersion describes a specific version of a key and holds the actual key material"
    },
    "controller.api.resources.scopes.v1.KeyVersionDestructionJob": {
      "type": "object",
      "properties": {
        "key_version_id": {
          "type": "string",
          "description": "The ID of the Key version this job relates to."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Scope information for this resource."
        },
        "status": {
          "type": "string",
          "description": "The current status of the key version destruction job. One of \"pending\", \"running\" or \"completed\"."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this key version destruction job was created."
        },
        "completed_count": {
          "type": "string",
          "format": "int64",
          "description": "The number of rows that have been successfully re-encrypted with a new key version.\nAll rows must be re-encrypted before the key version can be destroyed."
        },
        "total_count": {
          "type": "string",
          "format": "int64",
          "description": "The total number of rows that need re-encrypting."
        }
      },
      "description": "KeyVersionDestructionJob holds information about a pending key version destruction job."
    },
    "controller.api.resources.scopes.v1.Scope": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the scope.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the scope this resource is in. If this is the \"global\" scope this field will be empty."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Scope information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set descripton for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The type of the resource."
        },
        "primary_auth_method_id": {
          "type": "string",
          "description": "",
          "title": "The ID of the primary auth method for this scope.  A primary auth method\nis allowed to vivify users when new accounts are created and is the source for the users account info"
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The available actions on this resource for this user.",
          "readOnly": true
        },
        "authorized_collection_actions": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "The authorized actions for the scope's collections.",
          "readOnly": true
        },
        "storage_policy_id": {
          "type": "string",
          "description": "The attached storage policy id.",
          "readOnly": true
        }
      },
      "title": "Scope contains all fields related to a scope resource"
    },
    "controller.api.resources.scopes.v1.ScopeInfo": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the scope.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "The type of the scope.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of the scope, if any.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "The description of the scope, if any.",
          "readOnly": true
        },
        "parent_scope_id": {
          "type": "string",
          "description": "The ID of the parent scope, if any. This field is empty if it is the \"global\" scope.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.sessionrecordings.v1.ChannelRecording": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Channel recording."
        },
        "bytes_up": {
          "type": "string",
          "format": "uint64",
          "description": "The total number of bytes uploaded from the client in the Channel."
        },
        "bytes_down": {
          "type": "string",
          "format": "uint64",
          "description": "The total number of bytes downloaded to the client in the Channel."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Channel was created in the controller."
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time of the most recent update to the Channel."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Channel started."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Channel ended."
        },
        "duration": {
          "type": "string",
          "description": "The total duration of the Channel."
        },
        "mime_types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MimeTypes define the mime types that can\nbe used to consume the recording of this Channel.\nThe only supported mime type is \"application/x-asciicast\"."
        }
      },
      "description": "ChannelRecording contains recorded information about a single Channel within a Connection.\nChannels are only present in multiplexed protocols, such as SSH."
    },
    "controller.api.resources.sessionrecordings.v1.ConnectionRecording": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Connection recording."
        },
        "bytes_up": {
          "type": "string",
          "format": "uint64",
          "description": "The total number of bytes uploaded from the client in the Connection.\nThis includes any protocol overhead."
        },
        "bytes_down": {
          "type": "string",
          "format": "uint64",
          "description": "The total number of bytes downloaded to the client in the Connection.\nThis includes any protocol overhead."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Connection was created in the controller."
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time of the most recent update to the Connection."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Connection started."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Connection ended."
        },
        "duration": {
          "type": "string",
          "description": "The total duration of the Connection."
        },
        "mime_types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MimeTypes define the mime types that can\nbe used to consume the recording of this Connection.\nNo mime types are currently supported."
        },
        "channel_recordings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.ChannelRecording"
          },
          "description": "Optionally, the channels used in this Connection,\nif it is using a multiplexed protocol, such as SSH."
        }
      },
      "description": "ConnectionRecording contains the recording of a single Connection within a Session."
    },
    "controller.api.resources.sessionrecordings.v1.Credential": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Credential."
        },
        "credential_store": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.CredentialStore",
          "description": "The Credential Store of which this Credential is a part."
        },
        "name": {
          "type": "string",
          "description": "The name of the credential."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description."
        },
        "purposes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The purposes for which this Credential was attached to the sesssion."
        },
        "type": {
          "type": "string",
          "description": "The Credential type."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Credential type."
        }
      },
      "title": "Credential contains fields related to an Credential resource"
    },
    "controller.api.resources.sessionrecordings.v1.CredentialLibrary": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Credential Library."
        },
        "credential_store": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.CredentialStore",
          "description": "The credential store of which this library is a part."
        },
        "name": {
          "type": "string",
          "description": "Optional name of this Credential Library."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description of this Credential Library."
        },
        "purposes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The purposes for which this CredentialLibrary was attached to the sesssion."
        },
        "type": {
          "type": "string",
          "description": "The Credential Library type."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Credential Library type."
        }
      },
      "title": "CredentialLibrary contains all fields related to an Credential Library resource"
    },
    "controller.api.resources.sessionrecordings.v1.CredentialStore": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Credential Store."
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope of which this Credential Store is a part."
        },
        "name": {
          "type": "string",
          "description": "The name for identification purposes if set."
        },
        "description": {
          "type": "string",
          "description": "The description for identification purposes if set."
        },
        "type": {
          "type": "string",
          "description": "The Credential Store type."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Credential Store type."
        }
      },
      "title": "CredentialStore contains all fields related to a Credential Store resource"
    },
    "controller.api.resources.sessionrecordings.v1.Host": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "",
          "title": "The ID of the Host"
        },
        "host_catalog": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.HostCatalog",
          "title": "The Host Catalog this Host is in"
        },
        "name": {
          "type": "string",
          "description": "The name of the Host, if set."
        },
        "description": {
          "type": "string",
          "description": "The description of the Host, if set."
        },
        "type": {
          "type": "string",
          "description": "",
          "title": "The type of the host. This will be either \"static\" or \"plugin\""
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Host."
        },
        "external_id": {
          "type": "string",
          "description": "The external id of the Host, if any."
        },
        "external_name": {
          "type": "string",
          "description": "The external name of the Host, if any."
        }
      },
      "description": "Host describes the Host that was chosen for the recorded session."
    },
    "controller.api.resources.sessionrecordings.v1.HostCatalog": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "",
          "title": "The ID of the Host Catalog"
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "title": "The scope that the Host Catalog is in"
        },
        "plugin_id": {
          "type": "string",
          "description": "The plugin id used by this Host Catalog, if any."
        },
        "name": {
          "type": "string",
          "description": "",
          "title": "The name of the Host Catalog, if set"
        },
        "description": {
          "type": "string",
          "description": "The description of the Host Catalog."
        },
        "type": {
          "type": "string",
          "description": "",
          "title": "The type of the Host Catalog.  This will be either \"static\" or \"plugin\""
        },
        "attributes": {
          "type": "object",
          "description": "The attributes of the Host Catalog."
        }
      },
      "description": "HostCatalog describes the HostCatalog that contains the host chosen for the\nrecorded session."
    },
    "controller.api.resources.sessionrecordings.v1.SessionRecording": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Session recording."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "The scope that the Session Recording is in.\nThis is inferred from the storage bucket associated\nwith the target."
        },
        "session_id": {
          "type": "string",
          "description": "The ID of the Session which this Session Recording recorded."
        },
        "storage_bucket_id": {
          "type": "string",
          "description": "The ID of the Storage Bucket for the Target of this Session Recording."
        },
        "bytes_up": {
          "type": "string",
          "format": "uint64",
          "description": "The total number of bytes uploaded from the client in the Session.\nThis includes all bytes uploaded over all Connections, including\nany protocol overhead."
        },
        "bytes_down": {
          "type": "string",
          "format": "uint64",
          "description": "The total number of bytes downloaded to the client in the Session.\nThis includes all bytes downloaded over all Connections, including\nany protocol overhead."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Session Recording was created in the controller."
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time of the most recent update to the Session Recording."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Session started."
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "The time the Session ended."
        },
        "duration": {
          "type": "string",
          "description": "The total duration of the Session."
        },
        "type": {
          "type": "string",
          "description": "Type of the Session that was recorded (e.g. ssh)."
        },
        "state": {
          "type": "string",
          "description": "The current state of the session recording. One of\n\"started\", \"available\" and \"unknown\"."
        },
        "error_details": {
          "type": "string",
          "description": "Any error seen during the closing of the session recording.\nCurrently only set if state is \"unknown\"."
        },
        "mime_types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "MimeTypes define the mime types that can\nbe used to consume the recording of this Session.\nNo mime types are currently supported."
        },
        "endpoint": {
          "type": "string",
          "description": "The endpoint of the Session; that is, the address to which the egress worker connected."
        },
        "connection_recordings": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.ConnectionRecording"
          },
          "description": "The recordings of the connections that were created in the Session.\nThis field may be unset when listing Session recordings."
        },
        "create_time_values": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.ValuesAtTime",
          "description": "create_time_values contains the values of related fields at the time\nthis Session Recording was created. This may be unset when listing."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The available actions on this resource for this user."
        },
        "retain_until": {
          "type": "string",
          "format": "date-time",
          "description": "The time until a session recording is required to be stored."
        },
        "delete_after": {
          "type": "string",
          "format": "date-time",
          "description": "The time a session recording is scheduled to be automatically deleted."
        }
      },
      "description": "SessionRecording contains information about the recording of a Session."
    },
    "controller.api.resources.sessionrecordings.v1.Target": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Target."
        },
        "name": {
          "type": "string",
          "description": "The name of the Target, if set."
        },
        "description": {
          "type": "string",
          "description": "The description of the Target, if set."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "The scope that the Target is in."
        },
        "session_max_seconds": {
          "type": "integer",
          "format": "int64",
          "description": "Maximum total lifetime of a created Session, in seconds."
        },
        "session_connection_limit": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of connections allowed in a Session.  Unlimited is indicated by the value -1."
        },
        "worker_filter": {
          "type": "string",
          "description": "Optional boolean expression to filter the workers that are allowed to satisfy this request."
        },
        "egress_worker_filter": {
          "type": "string",
          "description": "Optional boolean expressions to filter the egress workers that are allowed to satisfy this request."
        },
        "ingress_worker_filter": {
          "type": "string",
          "description": "Optional boolean expressions to filter the ingress workers that are allowed to satisfy this request."
        },
        "type": {
          "type": "string",
          "description": "The type of the Target."
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Target."
        }
      },
      "description": "Target describes a target in Boundary."
    },
    "controller.api.resources.sessionrecordings.v1.User": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the User."
        },
        "name": {
          "type": "string",
          "description": "The name of the User that created the Session."
        },
        "description": {
          "type": "string",
          "description": "The description of the User that created the Session."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "The scope that the User is in."
        }
      },
      "description": "User describes an authenticated user in Boundary."
    },
    "controller.api.resources.sessionrecordings.v1.ValuesAtTime": {
      "type": "object",
      "properties": {
        "user": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.User",
          "description": "Information about the User that created the Session."
        },
        "target": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.Target",
          "description": "Information about the Target the Session connected to."
        },
        "host": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.Host",
          "description": "Information about the Host chosen for the session."
        },
        "credentials": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.Credential"
          },
          "description": "Information about the Credentials used for this session."
        },
        "credential_libraries": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.CredentialLibrary"
          },
          "description": "Information about the Credential Libraries used for this session."
        }
      },
      "description": "ValuesAtTime contain information about other Boundary resources as they\nwere at a certain time through the lifetime of the Session Recording."
    },
    "controller.api.resources.sessions.v1.Connection": {
      "type": "object",
      "properties": {
        "client_tcp_address": {
          "type": "string",
          "description": "",
          "title": "client_tcp_address of the connection"
        },
        "client_tcp_port": {
          "type": "integer",
          "format": "int64",
          "description": "",
          "title": "client_tcp_port of the connection"
        },
        "endpoint_tcp_address": {
          "type": "string",
          "description": "",
          "title": "endpoint_tcp_address of the connection"
        },
        "endpoint_tcp_port": {
          "type": "integer",
          "format": "int64",
          "description": "",
          "title": "endpoint_tcp_port of the connection"
        },
        "bytes_up": {
          "type": "string",
          "format": "int64",
          "description": "",
          "title": "bytes_up of the connection"
        },
        "bytes_down": {
          "type": "string",
          "format": "int64",
          "description": "",
          "title": "bytes_down of the connection"
        },
        "closed_reason": {
          "type": "string",
          "description": "",
          "title": "closed_reason of the connection"
        }
      },
      "title": "Connection contains information about a specific connection in a session"
    },
    "controller.api.resources.sessions.v1.Session": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Session.",
          "readOnly": true
        },
        "target_id": {
          "type": "string",
          "description": "Output only. The ID of the Target that created this Session.",
          "readOnly": true
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used when canceling this Session to ensure that the operation is acting on a known session state."
        },
        "type": {
          "type": "string",
          "description": "Output only. Type of the Session (e.g. tcp).",
          "readOnly": true
        },
        "expiration_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. After this time the connection will be expired, e.g. forcefully terminated.",
          "readOnly": true
        },
        "auth_token_id": {
          "type": "string",
          "description": "Output only. The ID of the Auth Token used to authenticate.",
          "readOnly": true
        },
        "user_id": {
          "type": "string",
          "description": "Output only. The ID of the User that requested the Session.",
          "readOnly": true
        },
        "host_set_id": {
          "type": "string",
          "description": "Output only. The Host Set sourcing the Host for this Session.",
          "readOnly": true
        },
        "host_id": {
          "type": "string",
          "description": "Output only. The Host used by the Session.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "Output only. The Scope of the Session.",
          "readOnly": true
        },
        "endpoint": {
          "type": "string",
          "description": "Output only. The endpoint of the Session; that is, the address to which the worker is proxying data.",
          "readOnly": true
        },
        "states": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessions.v1.SessionState"
          },
          "description": "Output only. The states of this Session in descending order from the current state to the first.",
          "readOnly": true
        },
        "status": {
          "type": "string",
          "description": "Output only. The current status of this Session.",
          "readOnly": true
        },
        "certificate": {
          "type": "string",
          "format": "byte",
          "description": "Output only. The certificate generated for the session. Raw DER bytes.",
          "readOnly": true
        },
        "termination_reason": {
          "type": "string",
          "description": "Output only. If the session is terminated, this provides a short description as to why.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        },
        "connections": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessions.v1.Connection"
          },
          "description": "Output only. The associated connections with this session.",
          "readOnly": true
        }
      },
      "title": "Session contains all fields related to a Session resource"
    },
    "controller.api.resources.sessions.v1.SessionState": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "The status of the Session, e.g. \"pending\", \"active\", \"canceling\", \"terminated\"."
        },
        "start_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time the Session entered this state.",
          "readOnly": true
        },
        "end_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time the Session stopped being in this state.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.storagebuckets.v1.StorageBucket": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the storage bucket.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope of which this storage bucket is a part."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "plugin_id": {
          "type": "string",
          "description": "The ID of the plugin of which this storage bucket is created."
        },
        "plugin": {
          "$ref": "#/definitions/controller.api.resources.plugins.v1.PluginInfo",
          "description": "Output only. Plugin information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "bucket_name": {
          "type": "string",
          "description": "The name of the bucket within the external object store service."
        },
        "bucket_prefix": {
          "type": "string",
          "description": "The prefix used to organize the data held within the external object store."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The type of Storage Bucket (currently only plugin)."
        },
        "attributes": {
          "type": "object",
          "description": "Attributes specific to the catalog type."
        },
        "secrets": {
          "type": "object",
          "description": "Secrets specific to the storage bucket type. These are never output."
        },
        "secrets_hmac": {
          "type": "string",
          "description": "Output only. The HMAC of the last secrets supplied via the API, if any.",
          "readOnly": true
        },
        "worker_filter": {
          "type": "string",
          "description": "",
          "title": "Filters to the worker(s) that can handle requests for this storage bucket"
        },
        "storage_bucket_credential_id": {
          "type": "string",
          "description": "Internal use only. The storage bucket credential id for this storage bucket."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        }
      },
      "title": "StorageBucket manages external object stores"
    },
    "controller.api.resources.targets.v1.Alias": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the alias referencing this target.",
          "readOnly": true
        },
        "value": {
          "type": "string",
          "description": "Ouput only. The value of the alias referencing this target."
        },
        "scope_id": {
          "type": "string",
          "title": ";"
        },
        "attributes": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.TargetAliasAttributes"
        }
      },
      "description": "Alias is the alias information related to the aliases associated with the target."
    },
    "controller.api.resources.targets.v1.AuthorizeSessionArguments": {
      "type": "object",
      "properties": {
        "host_id": {
          "type": "string",
          "description": "host_id is the id of the host that the session will be authorized for.\nWhen specified authorizing a session using this alias will have the same\neffect of authorizing a session to the alias' destination_id and passing\nin this value through the -host-id flag. If the host-id flag is also\nspecified when calling authorize-session an error will be returned unless\nthe provided host-id matches this value."
        }
      }
    },
    "controller.api.resources.targets.v1.CredentialSource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "The ID of the Credential. May be empty if the credential is dynamically generated from a library."
        },
        "name": {
          "type": "string",
          "description": "Output only. The name of the Credential source.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "Output only. The description of the Credential source.",
          "readOnly": true
        },
        "credential_store_id": {
          "type": "string",
          "description": "Output only. The Credential Store to which this Credential source belongs.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Output only. The type of the credential source (e.g. \"vault\"; not the type of the credential itself).",
          "readOnly": true
        },
        "credential_type": {
          "type": "string",
          "description": "Output only. The type of the credential, empty if unspecified.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.targets.v1.HostSource": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Host Set.",
          "readOnly": true
        },
        "host_catalog_id": {
          "type": "string",
          "description": "Output only. The Host Catalog to which this Host Source belongs.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.targets.v1.SessionAuthorization": {
      "type": "object",
      "properties": {
        "session_id": {
          "type": "string",
          "description": "Output only. The ID of the Session.",
          "readOnly": true
        },
        "target_id": {
          "type": "string",
          "description": "Output only. The ID of the Target authorizing this Session.",
          "readOnly": true
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "user_id": {
          "type": "string",
          "description": "Output only. The User for which this Session was authorized.",
          "readOnly": true
        },
        "host_set_id": {
          "type": "string",
          "description": "Output only. The Host Set containing the Host being used for this Session.",
          "readOnly": true
        },
        "host_id": {
          "type": "string",
          "description": "Output only. The Host whose address is being used as the endpoint for this Session.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Output only. Type of the Session (e.g. tcp, ssh, etc.).",
          "readOnly": true
        },
        "authorization_token": {
          "type": "string",
          "description": "Output only. The marshaled SessionAuthorizationData message containing all information that the proxy needs.",
          "readOnly": true
        },
        "connection_limit": {
          "type": "integer",
          "format": "int32",
          "description": "Output only. The connection limit being applied to this session. -1 means unlimited. This is not actually enforced on the client side but it provides for better listener handling by including it.",
          "readOnly": true
        },
        "endpoint": {
          "type": "string",
          "description": "Output only. The endpoint address that the worker will connect to, useful for setting TLS parameters.",
          "readOnly": true
        },
        "endpoint_port": {
          "type": "integer",
          "format": "int64",
          "description": "Output only. The endpoint port that will be connected to, either from a\nport directly on the target or from a service definition.",
          "readOnly": true
        },
        "expiration": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The expiration time of the session.",
          "readOnly": true
        },
        "credentials": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.targets.v1.SessionCredential"
          },
          "description": "Output only. The credentials for this session.",
          "readOnly": true
        },
        "session_recording_id": {
          "type": "string",
          "description": "Output only. The ID of the Session Recording.",
          "readOnly": true
        }
      },
      "description": "SessionAuthorization contains all fields related to authorization for a Session. It's in the Targets package because it's returned by a Target's authorize action."
    },
    "controller.api.resources.targets.v1.SessionCredential": {
      "type": "object",
      "properties": {
        "credential_source": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.CredentialSource",
          "description": "Output only. The credential source information.",
          "readOnly": true
        },
        "secret": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.SessionSecret",
          "description": "Output only. The secret of this credential base64 encoded.",
          "readOnly": true
        },
        "credential": {
          "type": "object",
          "description": "Output only. The fields of the strongly typed credential, empty if the credential type of the\ncredential source is unspecified.",
          "readOnly": true
        }
      },
      "description": "Credential information for a session."
    },
    "controller.api.resources.targets.v1.SessionSecret": {
      "type": "object",
      "properties": {
        "raw": {
          "type": "string",
          "description": "Output only. The base64-encoded value representing the raw bytes from the\ncredential provider.",
          "readOnly": true
        },
        "decoded": {
          "type": "object",
          "description": "Output only. The decoded raw string, if a JSON object.",
          "readOnly": true
        }
      },
      "description": "The actual secret for a session credential."
    },
    "controller.api.resources.targets.v1.Target": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the resource.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The Scope of of this resource. This must be defined for creation of this resource, but is otherwise output only."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Required name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "type": {
          "type": "string",
          "description": "The type of the Target."
        },
        "host_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The IDs of the Host Sources associated with this Target.",
          "readOnly": true
        },
        "host_sources": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.targets.v1.HostSource"
          },
          "description": "Output only. The Host Sources associated with this Target.",
          "readOnly": true
        },
        "session_max_seconds": {
          "type": "integer",
          "format": "int64",
          "description": "Maximum total lifetime of a created Session, in seconds."
        },
        "session_connection_limit": {
          "type": "integer",
          "format": "int32",
          "description": "Maximum number of connections allowed in a Session.  Unlimited is indicated by the value -1."
        },
        "worker_filter": {
          "type": "string",
          "description": "Optional boolean expression to filter the workers that are allowed to satisfy this request.\nDeprecated; use egress or ingress worker filters instead."
        },
        "egress_worker_filter": {
          "type": "string",
          "description": "Optional boolean expressions to filter the egress workers that are allowed to satisfy this request."
        },
        "ingress_worker_filter": {
          "type": "string",
          "description": "Optional boolean expressions to filter the ingress workers that are allowed to satisfy this request.\nUnsupported on OSS."
        },
        "brokered_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The IDs of the brokered credential source ids associated with this Target.",
          "readOnly": true
        },
        "brokered_credential_sources": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.targets.v1.CredentialSource"
          },
          "description": "Output only. The brokered credential sources associated with this Target.",
          "readOnly": true
        },
        "injected_application_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The IDs of the injected application credential source ids associated with this Target.",
          "readOnly": true
        },
        "injected_application_credential_sources": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.targets.v1.CredentialSource"
          },
          "description": "Output only. The injected application credential sources associated with this Target.",
          "readOnly": true
        },
        "attributes": {
          "type": "object",
          "description": "The attributes that are applicable for the specific Target."
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        },
        "address": {
          "type": "string",
          "description": "Optional string value that represents a network resource and is used when establishing a session."
        },
        "aliases": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.targets.v1.Alias"
          },
          "description": "Output only. The aliases that point to this Target.",
          "readOnly": true
        },
        "with_aliases": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.targets.v1.Alias"
          },
          "description": "Input only. with_aliases specify the aliases that should be created when\nthe target is created.  This field is only usable at target creation time."
        }
      },
      "title": "Target contains all fields related to a Target resource"
    },
    "controller.api.resources.targets.v1.TargetAliasAttributes": {
      "type": "object",
      "properties": {
        "authorize_session_arguments": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.AuthorizeSessionArguments",
          "title": ""
        }
      }
    },
    "controller.api.resources.users.v1.Account": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the Account.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "Output only. The Scope containing the Account.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.users.v1.User": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the User.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope this resource is in."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "account_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. Contains the list of Account IDs linked to this User.",
          "readOnly": true
        },
        "accounts": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.users.v1.Account"
          },
          "description": "Output only. The Accounts linked to this User.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for this user.",
          "readOnly": true
        },
        "login_name": {
          "type": "string",
          "description": "",
          "title": "Output only. login_name is a string that maps to the user's account \"login\nname\" from the scope's primary auth method",
          "readOnly": true
        },
        "full_name": {
          "type": "string",
          "description": "",
          "title": "Output only. full_name is a string that maps to the user's account name\nfrom the scope's primary auth method",
          "readOnly": true
        },
        "email": {
          "type": "string",
          "description": "",
          "title": "Output only. email is a string that maps to the user's account email from\nthe scope's primary auth method",
          "readOnly": true
        },
        "primary_account_id": {
          "type": "string",
          "description": "",
          "title": "Output only. primary_account_id is a string that maps to the user's account\npublic_id from the scope's primary auth method",
          "readOnly": true
        }
      },
      "title": "User contains all fields related to a User resource"
    },
    "controller.api.resources.workers.v1.Certificate": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "",
          "title": "Output only. The ID of the certificate",
          "readOnly": true
        },
        "public_key_sha256": {
          "type": "string",
          "description": "",
          "title": "Output only. The public key of the cert authority",
          "readOnly": true
        },
        "not_before_time": {
          "type": "string",
          "format": "date-time",
          "description": "",
          "title": "Output only. The time before which this CA is invalid",
          "readOnly": true
        },
        "not_after_time": {
          "type": "string",
          "format": "date-time",
          "description": "",
          "title": "Output only. The time after which this CA is invalid",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.workers.v1.CertificateAuthority": {
      "type": "object",
      "properties": {
        "certs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.workers.v1.Certificate"
          },
          "title": ""
        }
      }
    },
    "controller.api.resources.workers.v1.RemoteStoragePermissions": {
      "type": "object",
      "properties": {
        "write": {
          "type": "string",
          "description": "Output only. The status of the write permission state for the given storage bucket.\nPossible values are: unknown, error, and ok.",
          "readOnly": true
        },
        "read": {
          "type": "string",
          "description": "Output only. The status of the read permission state for the given storage bucket.\nPossible values are: unknown, error, and ok.",
          "readOnly": true
        },
        "delete": {
          "type": "string",
          "description": "Output only. The status of the delete permission state for the given storage bucket.\nPossible values are: unknown, error, and ok.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.workers.v1.RemoteStorageState": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "Output only. The overall health status of the storage bucket. The possible values include: error and available.\nThe status exists in an available state if each remote storage permission state does not have an error. An unknown remote\nstorage permission state does not affect the overall health status.",
          "readOnly": true
        },
        "permissions": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.RemoteStoragePermissions",
          "description": "Output only. The remote storage permissions contains the permission state for each individual permission type.",
          "readOnly": true
        }
      }
    },
    "controller.api.resources.workers.v1.Worker": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Output only. The ID of the User.",
          "readOnly": true
        },
        "scope_id": {
          "type": "string",
          "description": "The ID of the Scope this resource is in."
        },
        "scope": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.ScopeInfo",
          "description": "Output only. Scope information for this resource.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "Optional name for identification purposes. Can only be set through the API\nfor `pki`-type workers; read-only for `kms`-type workers."
        },
        "description": {
          "type": "string",
          "description": "Optional user-set description for identification purposes. Can only be set\nthrough the API for `pki`-type workers; read-only for `kms`-type workers."
        },
        "created_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was created.",
          "readOnly": true
        },
        "updated_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this resource was last updated.",
          "readOnly": true
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used in mutation requests, after the initial creation, to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "address": {
          "type": "string",
          "description": "Output only. The address that this worker is reachable at, as sourced from\nthe worker's configuration file.",
          "readOnly": true
        },
        "canonical_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "Output only. The deduplicated union of the tags reported by the worker from\nits configuration and any tags added through other means.  This is used\nwhen applying worker filters.",
          "readOnly": true
        },
        "config_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "Output only. The tags set in the worker's configuration file.",
          "readOnly": true
        },
        "last_status_time": {
          "type": "string",
          "format": "date-time",
          "description": "Output only. The time this worker daemon last reported its status.",
          "readOnly": true
        },
        "worker_generated_auth_token": {
          "type": "string",
          "description": "",
          "title": "worker_generated_auth_token is input only. Supports the worker led node\nenrollment flow where this credentials token is produced by a worker. This\ntoken is a base58 encoded types.FetchNodeCredentialsRequest from\nhttps://github.com/hashicorp/nodeenrollment"
        },
        "controller_generated_activation_token": {
          "type": "string",
          "description": "Output only. An activation token that can be given to a worker to correlate\nit to the created resource.",
          "readOnly": true
        },
        "active_connection_count": {
          "type": "integer",
          "format": "int64",
          "description": "Output only. The number of connections that this worker is currently handling.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Output only. The type of the worker, denoted by how it authenticates: `pki`\nor `kms`.",
          "readOnly": true
        },
        "api_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "description": "Output only. The api tags set for the worker.",
          "readOnly": true
        },
        "release_version": {
          "type": "string",
          "description": "Output only. The version of the Boundary binary the worker is running.",
          "readOnly": true
        },
        "directly_connected_downstream_workers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The ids of the workers directly connected to this worker.",
          "readOnly": true
        },
        "authorized_actions": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Output only. The available actions on this resource for the requester.",
          "readOnly": true
        },
        "local_storage_state": {
          "type": "string",
          "description": "",
          "title": "Output only. The local_storage_state indicates the state of the local disk space of the worker.\nPossible values are:\n- available: The worker local storage state is at an acceptable state\n- low storage: The worker is below the minimum threshold for local storage\n- critically low storage: The worker local storage state is below the critical minimum threshold for local storage\n- out of storage: The worker is out of local disk space\n- not configured: The worker does not have a local storage path configured\n- unknown: The default local storage state of a worker. Used when the local storage state of a worker is not yet known",
          "readOnly": true
        },
        "remote_storage_state": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/controller.api.resources.workers.v1.RemoteStorageState"
          },
          "description": "Output only. The remote_storage_state indicats the permission state of the storage buckets that the Worker\nis actively using. The possible permission state types include: write, read, and delete. The possible\npermission state values include: unknown, error, and ok.",
          "readOnly": true
        }
      },
      "title": "Worker contains all fields related to a Worker resource"
    },
    "controller.api.services.v1.AccountService.ChangePasswordBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "current_password": {
          "type": "string",
          "description": "The current password for the account."
        },
        "new_password": {
          "type": "string",
          "description": "The new password that should be set."
        }
      }
    },
    "controller.api.services.v1.AccountService.SetPasswordBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "password": {
          "type": "string",
          "description": "The password that should be set."
        }
      }
    },
    "controller.api.services.v1.AddGroupMembersResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
        }
      }
    },
    "controller.api.services.v1.AddHostSetHostsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
        }
      }
    },
    "controller.api.services.v1.AddRoleGrantScopesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.AddRoleGrantsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.AddRolePrincipalsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.AddTargetCredentialSourcesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.AddTargetHostSourcesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.AddUserAccountsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.users.v1.User"
        }
      }
    },
    "controller.api.services.v1.AddWorkerTagsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
        }
      }
    },
    "controller.api.services.v1.AttachStoragePolicyResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
        }
      }
    },
    "controller.api.services.v1.AuthMethodService.AuthenticateBody": {
      "type": "object",
      "properties": {
        "token_type": {
          "type": "string",
          "description": "This can be \"cookie\" or \"token\". If not provided, \"token\" will be used. \"cookie\" activates a split-cookie method where the token is split partially between http-only and regular cookies in order\nto keep it safe from rogue JS in the browser. Deprecated, use \"type\" instead."
        },
        "type": {
          "type": "string",
          "description": "This can be \"cookie\" or \"token\". If not provided, \"token\" will be used. \"cookie\" activates a split-cookie method where the token is split partially between http-only and regular cookies in order\nto keep it safe from rogue JS in the browser."
        },
        "attributes": {
          "type": "object",
          "example": {
            "login": "login",
            "password": "password"
          },
          "description": "The attributes that are used to authenticate to the auth method. The schema of this field depends on the type of the auth method. For password auth methods, the parameters are:\n```json\n{\n  \"login_name\": \"login_name\",\n  \"password\": \"password\"\n}\n```\nFor LDAP auth methods, the parameters are:\n```json\n{\n  \"login_name\": \"login_name\",\n  \"password\": \"password\"\n}\n```\nFor OIDC auth methods, the parameters are:\n```json\n{\n  \"roundtrip_payload\": {}\n}\n```\nOIDC authentication requires multiple calls to this endpoint. After the initial call and successful authentication, the OIDC provider must redirect the user to the `callback` command:\n```json\n{\n  \"code\": \"code\",\n  \"state\": \"state\",\n  \"error\": \"error\",\n  \"error_description\": \"error_description\",\n  \"error_uri\": \"error_uri\"\n}\n```\nOnce this has succeded, the issued auth token can be retrieved by using the `token` command:\n```json\n{\n  \"token_id\": \"token_id_from_initial_response\"\n}\n```\n"
        },
        "command": {
          "type": "string",
          "description": "The command to perform. One of \"login\", \"callback\", or \"token\"."
        }
      }
    },
    "controller.api.services.v1.AuthMethodService.ChangeStateBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "attributes": {
          "type": "object",
          "example": {
            "state": "active-public",
            "disable_discovered_config_validation": false
          },
          "description": "The attributes that are applicable for the specific auth method type. The schema of this field depends on the type of the auth method. The only supported auth method type is OIDC.\nFor OIDC auth methods, the parameters are:\n```json\n{\n  \"state\": \"active-public\",\n  \"disable_discovered_config_validation\": false\n}\n```\n"
        }
      }
    },
    "controller.api.services.v1.AuthenticateResponse": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of the token returned. Either \"cookie\" or \"token\"."
        },
        "attributes": {
          "type": "object",
          "example": {
            "login": "login",
            "password": "password"
          },
          "description": "The response attributes that are used to authenticate to the auth method. The schema of this field depends on the type of the auth method. For password, OIDC and LDAP auth methods, the response is an auth token:\n```json\n{\n  \"id\": \"token_id\",\n  \"scope_id\": \"scope_id\",\n  \"token\": \"token_string\",\n  \"user_id\": \"user_id\",\n  \"auth_method_id\": \"auth_method_id\",\n  \"account_id\": \"account_id\",\n  \"created_time\": \"token_created_time\",\n  \"updated_time\": \"token_updated_time\",\n  \"approximate_last_used_time\": \"token_approximate_last_used_time\",\n  \"expiration_time\": \"token_expiration_time\"\n}\n```\nFor OIDC auth methods, the initial parameters are:\n```json\n{\n  \"auth_url\": \"OIDC_auth_url\",\n  \"token_id\": \"OIDC_token_id\"\n}\n```\nThe `auth_url` is the URL that authenticating user should open in the browser to authenticate with the OIDC provider. The `token_id` should be used in subsequent calls to the `authenticate` endpoint to retrieve the auth token.\n"
        },
        "command": {
          "type": "string",
          "description": "The command that was performed."
        }
      }
    },
    "controller.api.services.v1.AuthorizeSessionResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.SessionAuthorization"
        }
      }
    },
    "controller.api.services.v1.CancelSessionResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.sessions.v1.Session"
        }
      }
    },
    "controller.api.services.v1.ChangePasswordResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
        }
      }
    },
    "controller.api.services.v1.ChangeStateResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
        }
      }
    },
    "controller.api.services.v1.CreateAccountResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
        }
      }
    },
    "controller.api.services.v1.CreateAliasResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
        }
      }
    },
    "controller.api.services.v1.CreateAuthMethodResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
        }
      }
    },
    "controller.api.services.v1.CreateControllerLedResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
        }
      }
    },
    "controller.api.services.v1.CreateCredentialLibraryResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
        }
      }
    },
    "controller.api.services.v1.CreateCredentialResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
        }
      }
    },
    "controller.api.services.v1.CreateCredentialStoreResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
        }
      }
    },
    "controller.api.services.v1.CreateGroupResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
        }
      }
    },
    "controller.api.services.v1.CreateHostCatalogResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
        }
      }
    },
    "controller.api.services.v1.CreateHostResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
        }
      }
    },
    "controller.api.services.v1.CreateHostSetResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
        }
      }
    },
    "controller.api.services.v1.CreateManagedGroupResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
        }
      }
    },
    "controller.api.services.v1.CreatePolicyResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
        }
      }
    },
    "controller.api.services.v1.CreateRoleResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string"
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.CreateScopeResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
        }
      }
    },
    "controller.api.services.v1.CreateStorageBucketResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
        }
      }
    },
    "controller.api.services.v1.CreateTargetResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.CreateUserResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.users.v1.User"
        }
      }
    },
    "controller.api.services.v1.CreateWorkerLedResponse": {
      "type": "object",
      "properties": {
        "uri": {
          "type": "string",
          "title": ""
        },
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
        }
      }
    },
    "controller.api.services.v1.DeleteAccountResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteAliasResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteAuthMethodResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteAuthTokenResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteCredentialLibraryResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteCredentialResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteCredentialStoreResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteGroupResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteHostCatalogResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteHostResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteHostSetResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteManagedGroupResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeletePolicyResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteRoleResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteScopeResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteSessionRecordingResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteStorageBucketResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteTargetResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteUserResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DeleteWorkerResponse": {
      "type": "object"
    },
    "controller.api.services.v1.DestroyKeyVersionRequest": {
      "type": "object",
      "properties": {
        "scope_id": {
          "type": "string",
          "title": ""
        },
        "key_version_id": {
          "type": "string",
          "title": ""
        }
      }
    },
    "controller.api.services.v1.DestroyKeyVersionResponse": {
      "type": "object",
      "properties": {
        "state": {
          "type": "string",
          "description": "Destruction state. One of \"pending\" or \"completed\".\nUse GET /v1/scopes/{scope_id}:list-key-version-destruction-jobs\nto monitor pending destruction jobs."
        }
      }
    },
    "controller.api.services.v1.DetachStoragePolicyResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
        }
      }
    },
    "controller.api.services.v1.GetAccountResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
        }
      }
    },
    "controller.api.services.v1.GetAliasResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
        }
      }
    },
    "controller.api.services.v1.GetAuthMethodResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
        }
      }
    },
    "controller.api.services.v1.GetAuthTokenResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.authtokens.v1.AuthToken"
        }
      }
    },
    "controller.api.services.v1.GetCredentialLibraryResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
        }
      }
    },
    "controller.api.services.v1.GetCredentialResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
        }
      }
    },
    "controller.api.services.v1.GetCredentialStoreResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
        }
      }
    },
    "controller.api.services.v1.GetGroupResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
        }
      }
    },
    "controller.api.services.v1.GetHostCatalogResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
        }
      }
    },
    "controller.api.services.v1.GetHostResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
        }
      }
    },
    "controller.api.services.v1.GetHostSetResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
        }
      }
    },
    "controller.api.services.v1.GetManagedGroupResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
        }
      }
    },
    "controller.api.services.v1.GetPolicyResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
        }
      }
    },
    "controller.api.services.v1.GetRoleResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.GetScopeResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
        }
      }
    },
    "controller.api.services.v1.GetSessionRecordingResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.SessionRecording",
          "description": "The requested recording."
        }
      }
    },
    "controller.api.services.v1.GetSessionResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.sessions.v1.Session"
        }
      }
    },
    "controller.api.services.v1.GetStorageBucketResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
        }
      }
    },
    "controller.api.services.v1.GetTargetResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.GetUserResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.users.v1.User"
        }
      }
    },
    "controller.api.services.v1.GetWorkerResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
        }
      }
    },
    "controller.api.services.v1.GroupService.AddGroupMembersBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "member_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.GroupService.RemoveGroupMembersBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "member_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.GroupService.SetGroupMembersBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "member_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.HostSetService.AddHostSetHostsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "host_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Host IDs which will be added to this Host Set. Each Host referenced here must be a child of the same Host Catalog of which this Host Set is a child."
        }
      }
    },
    "controller.api.services.v1.HostSetService.RemoveHostSetHostsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "host_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Host IDs which will be removed from this Host Set."
        }
      }
    },
    "controller.api.services.v1.HostSetService.SetHostSetHostsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "host_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of Host IDs which will be set on this Host Set. Each Host referenced here must be a child of the same Host Catalog of which this Host Set is a child."
        }
      }
    },
    "controller.api.services.v1.ListAccountsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
          },
          "description": "The list of accounts."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListAliasesResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
          },
          "description": "The list of aliases."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListAuthMethodsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
          },
          "description": "The items returned in this page."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListAuthTokensResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.authtokens.v1.AuthToken"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListCredentialLibrariesResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
          },
          "description": "The items returned in this page."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListCredentialStoresResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
          },
          "description": "The items returned in this page."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListCredentialsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
          },
          "description": "The items returned in this page."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListGroupsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListHostCatalogsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListHostSetsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListHostsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListKeyVersionDestructionJobsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.scopes.v1.KeyVersionDestructionJob"
          }
        }
      }
    },
    "controller.api.services.v1.ListKeysResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.scopes.v1.Key"
          }
        }
      }
    },
    "controller.api.services.v1.ListManagedGroupsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListPoliciesResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListResolvableAliasesResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. This includes aliases which have their\ndestination_id removed or set to a resource for which the requester doesn't\nhave permissions."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListRolesResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListScopesResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
          },
          "description": "The items returned in this page."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of an pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListSessionRecordingsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.SessionRecording"
          },
          "description": "The items returned in this page."
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListSessionsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.sessions.v1.Session"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListStorageBucketsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
          },
          "title": "The items returned in this page"
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListTargetsResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListUsersResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.users.v1.User"
          }
        },
        "response_type": {
          "type": "string",
          "description": "The type of response, either \"delta\" or \"complete\".\nDelta signifies that this is part of a paginated result\nor an update to a previously completed pagination.\nComplete signifies that it is the last page."
        },
        "list_token": {
          "type": "string",
          "description": "An opaque token used to continue an existing pagination or\nrequest updated items. Use this token in the next list request\nto request the next page."
        },
        "sort_by": {
          "type": "string",
          "description": "The name of the field which the items are sorted by."
        },
        "sort_dir": {
          "type": "string",
          "description": "The direction of the sort, either \"asc\" or \"desc\"."
        },
        "removed_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "A list of item IDs that have been removed since they were returned\nas part of a pagination. They should be dropped from any client cache.\nThis may contain items that are not known to the cache, if they were\ncreated and deleted between listings."
        },
        "est_item_count": {
          "type": "integer",
          "format": "int64",
          "description": "An estimate at the total items available. This may change during pagination."
        }
      }
    },
    "controller.api.services.v1.ListWorkersResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
          }
        }
      }
    },
    "controller.api.services.v1.MonthlyActiveUsersResponse": {
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.resources.billing.v1.ActiveUsers"
          }
        }
      }
    },
    "controller.api.services.v1.ReApplyStoragePolicyResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.sessionrecordings.v1.SessionRecording",
          "description": "The requested recording."
        }
      }
    },
    "controller.api.services.v1.ReadCertificateAuthorityResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.CertificateAuthority"
        }
      }
    },
    "controller.api.services.v1.ReinitializeCertificateAuthorityResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.CertificateAuthority"
        }
      }
    },
    "controller.api.services.v1.RemoveGroupMembersResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
        }
      }
    },
    "controller.api.services.v1.RemoveHostSetHostsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
        }
      }
    },
    "controller.api.services.v1.RemoveRoleGrantScopesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.RemoveRoleGrantsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.RemoveRolePrincipalsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.RemoveTargetCredentialSourcesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.RemoveTargetHostSourcesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.RemoveUserAccountsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.users.v1.User"
        }
      }
    },
    "controller.api.services.v1.RemoveWorkerTagsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
        }
      }
    },
    "controller.api.services.v1.RoleService.AddRoleGrantScopesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "grant_scope_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.AddRoleGrantsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "grant_strings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.AddRolePrincipalsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "principal_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.RemoveRoleGrantScopesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "grant_scope_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.RemoveRoleGrantsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "grant_strings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.RemoveRolePrincipalsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "principal_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.SetRoleGrantScopesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "grant_scope_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.SetRoleGrantsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "grant_strings": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RoleService.SetRolePrincipalsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "principal_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RotateKeysRequest": {
      "type": "object",
      "properties": {
        "scope_id": {
          "type": "string",
          "title": ""
        },
        "rewrap": {
          "type": "boolean",
          "title": ""
        }
      }
    },
    "controller.api.services.v1.RotateKeysResponse": {
      "type": "object"
    },
    "controller.api.services.v1.ScopeService.AttachStoragePolicyBody": {
      "type": "object",
      "properties": {
        "storage_policy_id": {
          "type": "string",
          "title": ""
        },
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        }
      }
    },
    "controller.api.services.v1.ScopeService.DetachStoragePolicyBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        }
      }
    },
    "controller.api.services.v1.SessionService.CancelSessionBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "title": ""
        }
      }
    },
    "controller.api.services.v1.SetGroupMembersResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
        }
      }
    },
    "controller.api.services.v1.SetHostSetHostsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
        }
      }
    },
    "controller.api.services.v1.SetPasswordResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
        }
      }
    },
    "controller.api.services.v1.SetRoleGrantScopesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.SetRoleGrantsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.SetRolePrincipalsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.SetTargetCredentialSourcesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.SetTargetHostSourcesResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.SetUserAccountsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.users.v1.User"
        }
      }
    },
    "controller.api.services.v1.SetWorkerTagsResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
        }
      }
    },
    "controller.api.services.v1.TargetService.AddTargetCredentialSourcesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "brokered_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Brokered credentials are returned to the user during session authorization."
        },
        "injected_application_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Injected application credentials are used by a Boundary worker to secure the\nconnection between the worker and the endpoint. Injected application credentials are\nnever returned to the user."
        }
      }
    },
    "controller.api.services.v1.TargetService.AddTargetHostSourcesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "host_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.TargetService.AuthorizeSessionBody": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the target. When using this, scope_id or scope_name must be set."
        },
        "scope_id": {
          "type": "string",
          "description": "The scope ID containing the target, if specifying the target by name."
        },
        "scope_name": {
          "type": "string",
          "description": "The scope name containing the target, if specifying the target by name."
        },
        "host_id": {
          "type": "string",
          "description": "An optional parameter allowing specification of the particular Host within the Target's configured Host Sets to connect to during this Session."
        }
      }
    },
    "controller.api.services.v1.TargetService.RemoveTargetCredentialSourcesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "brokered_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Brokered credentials are returned to the user during session authorization."
        },
        "injected_application_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Injected application credentials are used by a Boundary worker to secure the\nconnection between the worker and the endpoint. Injected application credentials are\nnever returned to the user."
        }
      }
    },
    "controller.api.services.v1.TargetService.RemoveTargetHostSourcesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "host_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.TargetService.SetTargetCredentialSourcesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "brokered_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Brokered credentials are returned to the user during session authorization."
        },
        "injected_application_credential_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Injected application credentials are used by a Boundary worker to secure the\nconnection between the worker and the endpoint. Injected application credentials are\nnever returned to the user."
        }
      },
      "description": "Sets the values for credential sources. Any credential_source_id field that\nis not set in the request will result in those fields being cleared."
    },
    "controller.api.services.v1.TargetService.SetTargetHostSourcesBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "host_source_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.UpdateAccountResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.accounts.v1.Account"
        }
      }
    },
    "controller.api.services.v1.UpdateAliasResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.aliases.v1.Alias"
        }
      }
    },
    "controller.api.services.v1.UpdateAuthMethodResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.authmethods.v1.AuthMethod"
        }
      }
    },
    "controller.api.services.v1.UpdateCredentialLibraryResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentiallibraries.v1.CredentialLibrary"
        }
      }
    },
    "controller.api.services.v1.UpdateCredentialResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentials.v1.Credential"
        }
      }
    },
    "controller.api.services.v1.UpdateCredentialStoreResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.credentialstores.v1.CredentialStore"
        }
      }
    },
    "controller.api.services.v1.UpdateGroupResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.groups.v1.Group"
        }
      }
    },
    "controller.api.services.v1.UpdateHostCatalogResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostcatalogs.v1.HostCatalog"
        }
      }
    },
    "controller.api.services.v1.UpdateHostResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hosts.v1.Host"
        }
      }
    },
    "controller.api.services.v1.UpdateHostSetResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.hostsets.v1.HostSet"
        }
      }
    },
    "controller.api.services.v1.UpdateManagedGroupResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.managedgroups.v1.ManagedGroup"
        }
      }
    },
    "controller.api.services.v1.UpdatePolicyResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.policies.v1.Policy"
        }
      }
    },
    "controller.api.services.v1.UpdateRoleResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.roles.v1.Role"
        }
      }
    },
    "controller.api.services.v1.UpdateScopeResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.scopes.v1.Scope"
        }
      }
    },
    "controller.api.services.v1.UpdateStorageBucketResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.storagebuckets.v1.StorageBucket"
        }
      }
    },
    "controller.api.services.v1.UpdateTargetResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.targets.v1.Target"
        }
      }
    },
    "controller.api.services.v1.UpdateUserResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.users.v1.User"
        }
      }
    },
    "controller.api.services.v1.UpdateWorkerResponse": {
      "type": "object",
      "properties": {
        "item": {
          "$ref": "#/definitions/controller.api.resources.workers.v1.Worker"
        }
      }
    },
    "controller.api.services.v1.UserService.AddUserAccountsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail."
        },
        "account_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.UserService.RemoveUserAccountsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail."
        },
        "account_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.UserService.SetUserAccountsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "The version ensures the User hasn't changed since it was last retrieved and if it has the request will fail."
        },
        "account_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.WorkerService.AddWorkerTagsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "api_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.WorkerService.RemoveWorkerTagsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "api_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "title": ""
        }
      }
    },
    "controller.api.services.v1.WorkerService.SetWorkerTagsBody": {
      "type": "object",
      "properties": {
        "version": {
          "type": "integer",
          "format": "int64",
          "description": "Version is used to ensure this resource has not changed.\nThe mutation will fail if the version does not match the latest known good version."
        },
        "api_tags": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "title": ""
        }
      }
    },
    "controller.api.v1.Error": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "description": "The kind of error this is."
        },
        "op": {
          "type": "string",
          "description": "An string indicating what operation was being run when the error was returned."
        },
        "message": {
          "type": "string",
          "description": "A human-readable explanation specific to this occurrence of the error."
        },
        "details": {
          "$ref": "#/definitions/controller.api.v1.ErrorDetails",
          "description": "Additional metadata regarding the error. Depending on the error, different fields are populated."
        }
      },
      "description": "Error is returned by the JSON API when an error occurs."
    },
    "controller.api.v1.ErrorDetails": {
      "type": "object",
      "properties": {
        "request_fields": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.v1.FieldError"
          },
          "description": "Request-field-specific error details."
        },
        "wrapped_errors": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/controller.api.v1.WrappedError"
          },
          "description": "The errors that were wrapped in the backend for this returned error."
        }
      },
      "description": "Additional details regarding a specific error."
    },
    "controller.api.v1.FieldError": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the field."
        },
        "description": {
          "type": "string",
          "description": "The description of the error."
        }
      },
      "description": "FieldErrors contains error information on a per field basis."
    },
    "controller.api.v1.WrappedError": {
      "type": "object",
      "properties": {
        "op": {
          "type": "string",
          "description": "A string indicating what operation was being run when the wrapped error occurred."
        },
        "message": {
          "type": "string",
          "description": "The wrapped error message."
        }
      },
      "description": "Error information relevant to an error that was wrapped by the backend."
    },
    "google.api.HttpBody": {
      "type": "object",
      "properties": {
        "content_type": {
          "type": "string",
          "description": "The HTTP Content-Type header value specifying the content type of the body."
        },
        "data": {
          "type": "string",
          "format": "byte",
          "description": "The HTTP request/response body as raw binary."
        },
        "extensions": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/google.protobuf.Any"
          },
          "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs."
        }
      },
      "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n    message GetResourceRequest {\n      // A unique request id.\n      string request_id = 1;\n\n      // The raw HTTP body is bound to this field.\n      google.api.HttpBody http_body = 2;\n\n    }\n\n    service ResourceService {\n      rpc GetResource(GetResourceRequest)\n        returns (google.api.HttpBody);\n      rpc UpdateResource(google.api.HttpBody)\n        returns (google.protobuf.Empty);\n\n    }\n\nExample with streaming methods:\n\n    service CaldavService {\n      rpc GetCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n      rpc UpdateCalendar(stream google.api.HttpBody)\n        returns (stream google.api.HttpBody);\n\n    }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged."
    },
    "google.protobuf.Any": {
      "type": "object",
      "properties": {
        "@type": {
          "type": "string",
          "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
        }
      },
      "additionalProperties": {},
      "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(\u0026foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\nExample 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\nExample 4: Pack and unpack a message in Go\n\n     foo := \u0026pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := \u0026pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": \u003cstring\u003e,\n      \"lastName\": \u003cstring\u003e\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    },
    "google.protobuf.NullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "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`.\n\n - NULL_VALUE: Null value."
    }
  },
  "securityDefinitions": {
    "ApiKeyAuth": {
      "type": "apiKey",
      "name": "Authorization",
      "in": "header"
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "externalDocs": {
    "description": "Boundary documentation",
    "url": "https://developer.hashicorp.com/boundary/docs"
  }
}
