{
  "openapi": "3.0.1",
  "info": {
    "title": "catena-tools-core",
    "version": "v1",
    "description": "# How To Use The API Explorer\n\nOn the right hand side of this page, you will see a list of \"Servers\".\n\n- *Mock server*: This server will return mock responses to all requests. It is best used when evaluating the shape of the Catena API.\n- *Localhost*: This server will point at a locally running version of Catena. It is best used when you want to make real requests or to validate that Catena is properly running on your machine.\n- *Custom Domain*: This server will point at any domain you specify with the _domain_ variable. It is best used when you have a version of Catena deployed to a live environment and you want to make real requests against it.\n\nTo configure which server is shown in example requests:\n1. Select the \"Try it\" button on any API operation within the API explorer\n\n[ ![api operation](/images/api-description/api-operation.png) ](/images/api-description/api-operation.png)\n\n\n2. Select your environment\n\n[ ![select environment](/images/api-description/select-environment.png) ](/images/api-description/select-environment.png)\n\n3. If you want to point the API explorer to an instance of Catena you have deployed, select \"Custom Domain\" and configure the `domain` environment variable.\n\n[ ![custom domain](/images/api-description/custom-domain.png) ](/images/api-description/custom-domain.png)\n\n4. You're all set! This setting will be cached across all API operations exposed in these docs."
  },
  "servers": [
    {
      "url": "http://localhost:5000",
      "description": "Localhost"
    },
    {
      "url": "https://{domain}",
      "description": "Custom Domain",
      "variables": {
        "domain": {
          "default": "your_domain_here",
          "description": "Your custom domain"
        }
      }
    }
  ],
  "paths": {
    "/api/v1/accounts": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "CreateOrGetAccountFromToken",
        "operationId": "catena.catena_accounts.CatenaAccounts_CreateOrGetAccountFromToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.CreateOrGetAccountFromTokenRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.CreateOrGetAccountFromTokenResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/{accountId}": {
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "GetAccountByID Retrieves information about the account given an id. This route is to be used by users",
        "operationId": "catena.catena_accounts.CatenaAccounts_GetAccountById",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetAccountByIdResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "UpdateAccount Updates a passed in account's display_name and metadata",
        "operationId": "catena.catena_accounts.CatenaAccounts_UpdateAccount",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "The id of the account to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/ids": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "GetAccountIds Retrieves a list of account ids. This route is to be used by users",
        "operationId": "catena.catena_accounts.CatenaAccounts_GetAccountIds",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.GetAccountIdsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetAccountIdsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/accounts/{accountId}": {
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "AdminGetAccountById is to be used by admins to retrieve detailed account information",
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminGetAccountById",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetAccountByIdResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/link": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "LinkAccountToPlatform",
        "operationId": "catena.catena_accounts.CatenaAccounts_LinkAccountToPlatform",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.LinkAccountToPlatformRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.LinkAccountToPlatformResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/metadata": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "CreateMetadataEntry Creates a metadata entry for an account",
        "operationId": "catena.catena_accounts.CatenaAccounts_CreateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.CreateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.CreateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "UpdateMetadataEntry Updates a passed in account's metadata for a specific entry",
        "operationId": "catena.catena_accounts.CatenaAccounts_UpdateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "GetMetadataEntries Gets all metadata entries for a passed in account id",
        "operationId": "catena.catena_accounts.CatenaAccounts_GetMetadataEntries",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/metadata/{entryKey}": {
      "delete": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "DeleteMetadataEntry Deletes a metadata entry for an account",
        "operationId": "catena.catena_accounts.CatenaAccounts_DeleteMetadataEntry",
        "parameters": [
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jsonHandlingType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Catena.Groups.DeleteJsonMetadataType"
            }
          },
          {
            "name": "propertiesToRemovePaths",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.DeleteMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "GetMetadataEntry Gets a metadata entry for a passed in key",
        "operationId": "catena.catena_accounts.CatenaAccounts_GetMetadataEntry",
        "parameters": [
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "accountId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/metadata/keys/search": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "Get all metadata entries with keys matching search criteria",
        "operationId": "catena.catena_accounts.CatenaAccounts_GetMetadataEntriesByKeyRegex",
        "parameters": [
          {
            "name": "accountId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regex",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "caseInsensitive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "invert",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/accounts/healthz": {
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "GetServiceHealth Gets the health of the CatenaAccounts service, logging any errors",
        "operationId": "catena.catena_accounts.CatenaAccounts_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/accounts": {
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminListAccounts",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.ListAccountsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminCreateAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.AdminCreateAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.CreateAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminUpdateAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminDeleteAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.DeleteAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.DeleteAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/accounts/metadata": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminCreateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.CreateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.CreateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminUpdateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminDeleteMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.DeleteMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.DeleteMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminGetMetadataEntry",
        "parameters": [
          {
            "name": "accountId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/accounts/metadata/keys/search": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "Get all metadata entries with keys matching search criteria",
        "operationId": "catena.catena_accounts.CatenaAccounts_AdminGetMetadataEntriesByKeyRegex",
        "parameters": [
          {
            "name": "accountId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regex",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "caseInsensitive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "invert",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/accounts": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerCreateAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.ServerCreateAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.ServerCreateAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerDeleteAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.ServerDeleteAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.ServerDeleteAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/accounts/link": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerLinkAccount",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.ServerLinkAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.ServerLinkAccountResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/accounts/metadata": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerCreateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.CreateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.CreateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerUpdateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.UpdateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerDeleteMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAccounts.DeleteMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.DeleteMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaAccounts"
        ],
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerGetMetadataEntry",
        "parameters": [
          {
            "name": "accountId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entryKey",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/accounts/metadata/keys/search": {
      "post": {
        "tags": [
          "CatenaAccounts"
        ],
        "summary": "Get all metadata entries with keys matching search criteria",
        "operationId": "catena.catena_accounts.CatenaAccounts_ServerGetMetadataEntriesByKeyRegex",
        "parameters": [
          {
            "name": "accountId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regex",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "caseInsensitive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "invert",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAccounts.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/api_keys/test": {
      "get": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "TestApiKey is used to test the validity of an API key",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_TestApiKey",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.TestApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/api_keys/permissions": {
      "get": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminGetApiKeyPermissions Gets a list of available permissions that can be attached to a policy for an API key",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminGetApiKeyPermissions",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminGetApiKeyPermissionsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/api_keys/policies": {
      "post": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminCreateApiKeyPolicy Creates a policy for use by one or more API keys",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminCreateApiKeyPolicy",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminCreateApiKeyPolicyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminCreateApiKeyPolicyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminGetApiKeyPolicies Gets a list of policies that may be used by one or more API keys",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminGetApiKeyPolicies",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminGetApiKeyPoliciesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/api_keys/policies/{id}": {
      "put": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminUpdateApiKeyPolicy Updates a policy for use by one or more API keys",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminUpdateApiKeyPolicy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminUpdateApiKeyPolicyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminUpdateApiKeyPolicyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminDeleteApiKeyPolicy Deletes a policy for use by one or more API keys",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminDeleteApiKeyPolicy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminDeleteApiKeyPolicyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/api_keys": {
      "post": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminCreateApiKey Creates an API key",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminCreateApiKey",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminCreateApiKeyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminCreateApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminGetApiKeys Gets all API keys",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminGetApiKeys",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminGetApiKeysResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/api_keys/{key}": {
      "put": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminUpdateApiKey Updates an API key",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminUpdateApiKey",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminUpdateApiKeyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminUpdateApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaApiKeys"
        ],
        "summary": "AdminDeleteApiKey Deletes an API key",
        "operationId": "catena.catena_api_keys.CatenaApiKeys_AdminDeleteApiKey",
        "parameters": [
          {
            "name": "key",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaApiKeys.AdminDeleteApiKeyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/api_keys/healthz": {
      "get": {
        "tags": [
          "CatenaApiKeys"
        ],
        "operationId": "catena.catena_api_keys.CatenaApiKeys_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/authentication/login": {
      "post": {
        "tags": [
          "CatenaAuthentication"
        ],
        "summary": "LoginWithProvider Logs in a user with the given provider.",
        "operationId": "catena.catena_authentication.CatenaAuthentication_LoginWithProvider",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAuthentication.LoginWithProviderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.LoginWithProviderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/authentication/available-providers": {
      "get": {
        "tags": [
          "CatenaAuthentication"
        ],
        "operationId": "catena.catena_authentication.CatenaAuthentication_AdminGetAvailableProviders",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.AdminGetAvailableProvidersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/authentication/providers": {
      "get": {
        "tags": [
          "CatenaAuthentication"
        ],
        "summary": "GetEnabledProviders returns a list of all active OAuth providers.",
        "operationId": "catena.catena_authentication.CatenaAuthentication_GetEnabledProviders",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.GetEnabledProvidersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/authentication/providers/{provider}": {
      "patch": {
        "tags": [
          "CatenaAuthentication"
        ],
        "summary": "AdminUpdateProviderConfig allows an admin to update the configuration of a specific provider",
        "operationId": "catena.catena_authentication.CatenaAuthentication_AdminAddOrUpdateProviderConfig",
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAuthentication.AdminAddOrUpdateProviderConfigRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.AdminAddOrUpdateProviderConfigResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaAuthentication"
        ],
        "operationId": "catena.catena_authentication.CatenaAuthentication_AdminGetProviderConfig",
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.AdminGetProviderConfigResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/authentication/providers/{provider}/status": {
      "put": {
        "tags": [
          "CatenaAuthentication"
        ],
        "summary": "AdminToggleProvider allows an admin to enable/disable a specific OAuth2 provider",
        "operationId": "catena.catena_authentication.CatenaAuthentication_AdminToggleProvider",
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaAuthentication.AdminToggleProviderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.AdminToggleProviderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/authentication/await": {
      "get": {
        "tags": [
          "CatenaAuthentication"
        ],
        "summary": "AwaitSession will send a message if the user successfully logs in or fails to log in after a timeout.\r\nIn this flow you will log in & go through the oauth flow, then wait for the callback to be called.",
        "operationId": "catena.catena_authentication.CatenaAuthentication_AwaitSession",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.AwaitSessionResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/authentication/healthz": {
      "get": {
        "tags": [
          "CatenaAuthentication"
        ],
        "summary": "GetServiceHealth Gets the health of the CatenaAuthentication service, logging any errors",
        "operationId": "catena.catena_authentication.CatenaAuthentication_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/authentication/logout": {
      "post": {
        "tags": [
          "CatenaAuthentication"
        ],
        "operationId": "catena.catena_authentication.CatenaAuthentication_Logout",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaAuthentication.LogoutResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "summary": "Creates a new catalog item in our system with the specified information.",
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminCreateCatalogItem",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminCreateCatalogItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminCreateCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CatenaEntitlements"
        ],
        "summary": "Updates a new catalog item in our system with the specified information.",
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminUpdateCatalogItem",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminUpdateCatalogItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminUpdateCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "summary": "Retreives a list of all catalog items, optionally filtered by specified parameters",
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetCatalogItems",
        "parameters": [
          {
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetCatalogItemsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/{catalogItemId}": {
      "delete": {
        "tags": [
          "CatenaEntitlements"
        ],
        "summary": "Deletes a new catalog item in our system with the specified id.",
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminDeleteCatalogItem",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminDeleteCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/{tag}": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "summary": "Retreives a list of all catalog items, optionally filtered by specified parameters",
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetCatalogItems",
        "parameters": [
          {
            "name": "tag",
            "in": "path",
            "description": "optional",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetCatalogItemsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/owned": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetAccountOwnsCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "customItemId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetAccountOwnsCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/custom/{customItemId}/owned": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetAccountOwnsCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetAccountOwnsCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/items": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetAccountCatalogItems",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetAccountCatalogItemsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/revoke": {
      "put": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminRevokeAccountCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminRevokeAccountCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/set/{count}": {
      "put": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminSetAccountCountableCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "operation",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.ExtendedOperation"
            }
          },
          {
            "name": "lockoutFlags.prohibitNonAdminUpdate.nullValue",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Services.PublicCommon.NullValue"
            }
          },
          {
            "name": "lockoutFlags.prohibitNonAdminUpdate.value",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminSetAccountCountableCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/set_extended": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminSetAccountCountableCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminSetAccountCountableCatalogItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminSetAccountCountableCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/increment/{count}": {
      "patch": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminIncrementAccountCountableCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminIncrementAccountCountableCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/decrement/{count}": {
      "patch": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminDecrementAccountCountableCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "allowNegativeTotal",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminDecrementAccountCountableCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/history/recent": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetMostRecentOwnershipChange",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetMostRecentOwnershipChangeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/account/{accountId}/item/{catalogItemId}/history": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetOwnershipChangeHistory",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetOwnershipChangeHistoryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/admin/order/place": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminPlaceOrderWithProvider",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminPlaceOrderWithProviderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminPlaceOrderWithProviderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/admin/order/refund": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminRefundOrderWithProvider",
        "parameters": [
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          },
          {
            "name": "orderId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminRefundOrderWithProviderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/admin/subscription/start": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminStartSubscriptionWithProvider",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminStartSubscriptionWithProviderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminStartSubscriptionWithProviderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/admin/subscription/cancel": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminCancelSubscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminCancelSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminCancelSubscriptionResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/admin/subscriptions/get": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetSubscriptions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetSubscriptionsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetSubscriptionsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/{catalogItemId}/provider_data/{provider}/modify": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminModifyProviderCatalogItemData",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminModifyProviderCatalogItemDataRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminModifyProviderCatalogItemDataResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/{catalogItemId}/provider_data/{provider}/remove": {
      "delete": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminRemoveProviderCatalogItemData",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminRemoveProviderCatalogItemDataResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/{catalogItemId}/provider_data": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetProviderCatalogItemData",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetProviderCatalogItemDataResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/{catalogItemId}/provider_data/{provider}": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetProviderCatalogItemData",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetProviderCatalogItemDataResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/price/add": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminAddCatalogItemPurchasePrice",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminAddCatalogItemPurchasePriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminAddCatalogItemPurchasePriceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/price/update": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminUpdateCatalogItemPurchasePrice",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminUpdateCatalogItemPurchasePriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminUpdateCatalogItemPurchasePriceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/{catalogItemId}/prices": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminGetCatalogItemPurchasePrices",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetCatalogItemPurchasePricesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetCatalogItemPurchasePricesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/price/delete": {
      "delete": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminDeleteCatalogItemPurchasePrice",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminDeleteCatalogItemPurchasePriceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminDeleteCatalogItemPurchasePriceResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/providers/supported": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminListSupportedProviders",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminListSupportedProvidersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/entitlements/providers/active": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_AdminListActiveProviders",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminListActiveProvidersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/offer/{provider}/prepare": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "summary": "A trusted service calls PrepareOffersForProvider on behalf of a player in order to get a list of potential orders that the player may execute for a given provider",
        "operationId": "catena.catena_entitlements.CatenaEntitlements_PrepareOffersForProvider",
        "parameters": [
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.PrepareOffersForProviderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.PrepareOffersForProviderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/offer/execute": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "summary": "A trusted service calls ExecutePreparedOffersForProvider to execute a set of orders with a provider. The request may fail if the prepared orders are no longer valid, or data does not match",
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ExecutePreparedOffers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.ExecutePreparedOffersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ExecutePreparedOffersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/account/{accountId}/item/{catalogItemId}/owned": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerGetAccountOwnsCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "customItemId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerGetAccountOwnsCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/account/{accountId}/item/custom/{customItemId}/owned": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerGetAccountOwnsCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerGetAccountOwnsCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/account/{accountId}/items": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerGetAccountCatalogItems",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerGetAccountCatalogItemsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/subscriptions/get": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerGetSubscriptions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerGetSubscriptionsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerGetSubscriptionsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/subscription/cancel": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerCancelSubscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerCancelSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerCancelSubscriptionResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/{catalogItemId}/provider_data/{provider}/modify": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerModifyProviderCatalogItemData",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerModifyProviderCatalogItemDataRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerModifyProviderCatalogItemDataResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/{catalogItemId}/provider_data/{provider}/remove": {
      "delete": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerRemoveProviderCatalogItemData",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "provider",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerRemoveProviderCatalogItemDataResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/account/{accountId}/item/{catalogItemId}/set/{count}": {
      "put": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerSetAccountCountableCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerSetAccountCountableCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/account/{accountId}/item/{catalogItemId}/increment/{count}": {
      "patch": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerIncrementAccountCountableCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerIncrementAccountCountableCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/entitlements/account/{accountId}/item/{catalogItemId}/decrement/{count}": {
      "patch": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_ServerDecrementAccountCountableCatalogItem",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "allowNegativeTotal",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerDecrementAccountCountableCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/account/item/{catalogItemId}/owned": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_GetAccountOwnsCatalogItem",
        "parameters": [
          {
            "name": "catalogItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "customItemId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.GetAccountOwnsCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/account/item/custom/{customItemId}/owned": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_GetAccountOwnsCatalogItem",
        "parameters": [
          {
            "name": "customItemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "catalogItemId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.GetAccountOwnsCatalogItemResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/account/items": {
      "get": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_GetAccountCatalogItems",
        "parameters": [
          {
            "name": "asap",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.GetAccountCatalogItemsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/subscriptions/get": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_GetSubscriptions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.GetSubscriptionsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.GetSubscriptionsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/entitlements/subscription/cancel": {
      "post": {
        "tags": [
          "CatenaEntitlements"
        ],
        "operationId": "catena.catena_entitlements.CatenaEntitlements_CancelSubscription",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaEntitlements.CancelSubscriptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaEntitlements.CancelSubscriptionResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/friends/request/send": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_SendFriendRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.SendFriendRequestRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.SendFriendRequestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/friends/request/accept": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "summary": "Links two players together as friends",
        "operationId": "catena.catena_friends.CatenaFriends_AcceptFriendRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AcceptFriendRequestRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AcceptFriendRequestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/friends/request/decline": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_DeclineFriendRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.DeclineFriendRequestRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.DeclineFriendRequestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/friends/remove": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_RemoveFriend",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.RemoveFriendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.RemoveFriendResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/friends/request/outgoing": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_GetOutgoingPendingRequests",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.GetOutgoingPendingRequestsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.GetOutgoingPendingRequestsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/friends/request/incoming": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_GetIncomingPendingRequests",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.GetIncomingPendingRequestsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.GetIncomingPendingRequestsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/friends/get": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_GetFriendsList",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.GetFriendsListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.GetFriendsListResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/friends/request/create-pending": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_AdminCreatePendingFriendRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AdminCreatePendingFriendRequestRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AdminCreatePendingFriendRequestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/friends/add": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_AdminAddFriend",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AdminAddFriendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AdminAddFriendResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/friends/request/remove-pending": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_AdminRemovePendingFriendRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AdminRemovePendingFriendRequestRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AdminRemovePendingFriendRequestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/friends/remove": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_AdminRemoveFriend",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AdminRemoveFriendRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AdminRemoveFriendResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/friends/get": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_AdminGetFriendsList",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AdminGetFriendsListRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AdminGetFriendsListResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/friends/request/incoming": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_AdminGetIncomingPendingRequests",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AdminGetIncomingPendingRequestsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AdminGetIncomingPendingRequestsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/friends/request/outgoing": {
      "post": {
        "tags": [
          "CatenaFriends"
        ],
        "operationId": "catena.catena_friends.CatenaFriends_AdminGetOutgoingPendingRequests",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaFriends.AdminGetOutgoingPendingRequestsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaFriends.AdminGetOutgoingPendingRequestsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/global_metadata/entry/{entryKey}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_GetMetadataEntry",
        "parameters": [
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/global_metadata/entry/{namespace}/{entryKey}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_GetMetadataEntry",
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/global_metadata/entries": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_GetMetadataEntries",
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/global_metadata/entries/{namespace}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_GetMetadataEntries",
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/global_metadata/keys/search": {
      "post": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_GetMetadataEntriesByKeyRegex",
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regex",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "caseInsensitive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "invert",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/global_metadata/healthz": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/global_metadata_namespaces": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminListNamespaces",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.ListNamespacesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/global_metadata": {
      "post": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminCreateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.CreateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.CreateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminUpdateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.UpdateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.UpdateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminDeleteMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.DeleteMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.DeleteMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/global_metadata/entry/{entryKey}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminGetMetadataEntry",
        "parameters": [
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/global_metadata/entry/{namespace}/{entryKey}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminGetMetadataEntry",
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/global_metadata/entries": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminGetMetadataEntries",
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/global_metadata/entries/{namespace}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminGetMetadataEntries",
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/global_metadata/keys/search": {
      "post": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "summary": "Get all metadata entries with keys matching search criteria",
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_AdminGetMetadataEntriesByKeyRegex",
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regex",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "caseInsensitive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "invert",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/global_metadata_namespaces": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerListNamespaces",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.ListNamespacesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/global_metadata": {
      "post": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerCreateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.CreateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.CreateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerUpdateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.UpdateMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.UpdateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerDeleteMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.DeleteMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.DeleteMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/global_metadata/entry/{entryKey}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerGetMetadataEntry",
        "parameters": [
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/global_metadata/entry/{namespace}/{entryKey}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerGetMetadataEntry",
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/global_metadata/entries": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerGetMetadataEntries",
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/global_metadata/entries/{namespace}": {
      "get": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerGetMetadataEntries",
        "parameters": [
          {
            "name": "namespace",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/global_metadata/keys/search": {
      "post": {
        "tags": [
          "CatenaGlobalMetadata"
        ],
        "summary": "Get all metadata entries with keys matching search criteria",
        "operationId": "catena.catena_global_metadata.CatenaGlobalMetadata_ServerGetMetadataEntriesByKeyRegex",
        "parameters": [
          {
            "name": "namespace",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "regex",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "caseInsensitive",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "invert",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaGlobalMetadata.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/leaderboards": {
      "get": {
        "tags": [
          "CatenaLeaderboards"
        ],
        "summary": "GetLeaderboards",
        "operationId": "catena.catena_leaderboards.CatenaLeaderboards_GetLeaderboards",
        "parameters": [
          {
            "name": "title",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "count",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaLeaderboards.LeaderboardResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/healthz": {
      "get": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matches": {
      "get": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_ListQueuedMatches",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.ListQueuedMatchesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/admin/list-active-matches": {
      "get": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_AdminListActiveMatches",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.AdminListActiveMatchesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/admin/match/{matchId}": {
      "get": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_AdminGetActiveMatchById",
        "parameters": [
          {
            "name": "matchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.AdminGetActiveMatchByIdResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/admin/delete/{matchId}": {
      "delete": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_AdminEndActiveMatch",
        "parameters": [
          {
            "name": "matchId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.AdminEndActiveMatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/admin/allocators/available": {
      "get": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_AdminGetAvailableAllocators",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.AdminGetAvailableAllocatorsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/admin/allocators/configured": {
      "get": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_AdminGetConfiguredAllocators",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.AdminGetConfiguredAllocatorsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/admin/config": {
      "get": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_AdminXGetMatchBrokerConfig",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.AdminXGetMatchBrokerConfigResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchbroker/admin/reconfigure": {
      "post": {
        "tags": [
          "CatenaMatchBroker"
        ],
        "operationId": "catena.catena_match_broker.CatenaMatchBroker_AdminXReconfigureMatchBroker",
        "parameters": [
          {
            "name": "fastSchedule",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "serverMaxLifetimeMinutes",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "matchPickupTimeSeconds",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "matchReadyTimeSeconds",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "matchMaxRunTimeMinutes",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "scheduleFrequencySeconds",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "delayAllocationSeconds",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchBroker.AdminXReconfigureMatchBrokerResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/start": {
      "post": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_StartMatchmaking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaMatchmaking.StartMatchmakingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.StartMatchmakingResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/cancel": {
      "post": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_CancelMatchmaking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaMatchmaking.CancelMatchmakingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.CancelMatchmakingResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/{ticketId}": {
      "get": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_GetMatchmakingStatus",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The ID of the ticket for which we are polling matchmaking status.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.GetMatchmakingStatusResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/server/start": {
      "post": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_ServerStartMatchmaking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaMatchmaking.StartMatchmakingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.StartMatchmakingResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/server/cancel": {
      "post": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_ServerCancelMatchmaking",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaMatchmaking.CancelMatchmakingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.CancelMatchmakingResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/server/{ticketId}": {
      "get": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_ServerGetMatchmakingStatus",
        "parameters": [
          {
            "name": "ticketId",
            "in": "path",
            "description": "The ID of the ticket for which we are polling matchmaking status.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.GetMatchmakingStatusResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/tickets": {
      "get": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_ListTickets",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.ListTicketsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/healthz": {
      "get": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/matchmaking/admin/config": {
      "get": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_AdminXGetMatchmakerConfig",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.AdminXGetMatchmakerConfigResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "CatenaMatchmaking"
        ],
        "operationId": "catena.catena_matchmaking.CatenaMatchmaking_AdminXReconfigureMatchmaker",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaMatchmaking.AdminXReconfigureMatchmakerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaMatchmaking.AdminXReconfigureMatchmakerResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/node_control/restart": {
      "post": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminRestartNode",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminRestartNodeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/node_control/set_preferred_implementation_override": {
      "post": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminSetPreferredImplementationOverride",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminSetPreferredImplementationOverrideRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminSetPreferredImplementationOverrideResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/node_control/get_preferred_implementation_overrides": {
      "get": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminGetPreferredImplementationOverrides",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminGetPreferredImplementationOverridesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/node_control/service_include": {
      "put": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminAddServiceToInclude",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminAddServiceToIncludeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminAddServiceToIncludeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminRemoveServiceToInclude",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminRemoveServiceToIncludeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminRemoveServiceToIncludeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/node_control/services_to_include": {
      "get": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminGetServicesToInclude",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminGetServicesToIncludeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/node_control/service_exclude": {
      "put": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminAddServiceToExclude",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminAddServiceToExcludeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminAddServiceToExcludeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminRemoveServiceToExclude",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminRemoveServiceToExcludeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminRemoveServiceToExcludeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/node_control/services_to_exclude": {
      "get": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_AdminGetServicesToExclude",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeControl.AdminGetServicesToExcludeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_control/healthz": {
      "get": {
        "tags": [
          "CatenaNodeControl"
        ],
        "operationId": "catena.catena_node_control.CatenaNodeControl_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/services/discovered": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_ListDiscoveredServices",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.ListDiscoveredServicesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/services/enabled": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_ListEnabledServices",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.ListEnabledServicesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/implementations/available": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_GetAvailableImplementations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.GetAvailableImplementationsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/implementations/active": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_GetActiveImplementations",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.GetActiveImplementationsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/schedule_tasks": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_AdminXGetScheduledTasks",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.AdminXGetScheduledTasksResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/healthz": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/node_health": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_GetNodeHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.GetNodeHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/is_healthy": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_NodeIsHealthy",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.NodeIsHealthyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/self_log_snapshot": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_AdminGetSelfLogSnapshot",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.AdminGetSelfLogSnapshotResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/node_inspection/self_log_stream": {
      "get": {
        "tags": [
          "CatenaNodeInspection"
        ],
        "operationId": "catena.catena_node_inspection.CatenaNodeInspection_AdminStreamSelfLog",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaNodeInspection.AdminStreamSelfLogResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/create": {
      "post": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "CreateParty Creates a new party setting the player who requested its creation as its leader.",
        "operationId": "catena.catena_parties.CatenaParties_CreateParty",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.CreatePartyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.CreatePartyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/update-player": {
      "patch": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "Note: Append operations are not currently supported when updating metadata with this method",
        "operationId": "catena.catena_parties.CatenaParties_UpdatePartyPlayer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.UpdatePartyPlayerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.UpdatePartyPlayerResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/join": {
      "post": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "JoinPartyWithInviteCode Allows a player to join a party by specifying its invite code.",
        "operationId": "catena.catena_parties.CatenaParties_JoinPartyWithInviteCode",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.JoinPartyWithInviteCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.JoinPartyWithInviteCodeResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties": {
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "GetPartyInfo Fetches party information for the party that the requesting player is currently a member of.",
        "operationId": "catena.catena_parties.CatenaParties_GetPartyInfo",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.GetPartyInfoResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/{partyId}": {
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "GetPartyInfoByPartyId Fetches information for a party given a party ID.",
        "operationId": "catena.catena_parties.CatenaParties_GetPartyInfoByPartyId",
        "parameters": [
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.GetPartyInfoResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/players/{playerId}": {
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "GetPlayerInfoById Fetches information for a player in a party given an ID.",
        "operationId": "catena.catena_parties.CatenaParties_GetPlayerInfoById",
        "parameters": [
          {
            "name": "playerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.GetPlayerInfoByIdResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/set-leader": {
      "put": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "SetPartyLeader Allows the current leader of a party to set a new leader.",
        "operationId": "catena.catena_parties.CatenaParties_SetPartyLeader",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.SetPartyLeaderRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.SetPartyLeaderResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/kick": {
      "put": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "KickFromParty Allows the leader of a party to kick another player from their party.",
        "operationId": "catena.catena_parties.CatenaParties_KickFromParty",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.KickFromPartyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.KickFromPartyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/leave": {
      "put": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "LeaveParty Allows a player to leave their party and assigns a new leader if the leader leaves.",
        "operationId": "catena.catena_parties.CatenaParties_LeaveParty",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.LeavePartyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.LeavePartyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/metadata": {
      "post": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "CreateMetadataEntry Creates a metadata entry for a party",
        "operationId": "catena.catena_parties.CatenaParties_CreateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.CreatePartyMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Groups.CreateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "UpdateMetadataEntry Updates a passed in party's metadata for a specific entry",
        "operationId": "catena.catena_parties.CatenaParties_UpdateMetadataEntry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.UpdatePartyMetadataEntryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Groups.UpdateMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/metadata/{innerRequest.id}/{innerRequest.entryKey}": {
      "delete": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "DeleteMetadataEntry Deletes a metadata entry for a party",
        "operationId": "catena.catena_parties.CatenaParties_DeleteMetadataEntry",
        "parameters": [
          {
            "name": "innerRequest.id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "innerRequest.entryKey",
            "in": "path",
            "description": "The key in the metadata whose entry needs to be deleted",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "innerRequest.jsonHandlingType",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/Catena.Groups.DeleteJsonMetadataType"
            }
          },
          {
            "name": "innerRequest.propertiesToRemovePaths",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "name": "playerId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Groups.DeleteMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "GetMetadataEntry Gets a metadata entry for a passed in key",
        "operationId": "catena.catena_parties.CatenaParties_GetMetadataEntry",
        "parameters": [
          {
            "name": "innerRequest.id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "innerRequest.entryKey",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "playerId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Groups.GetMetadataEntryResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/metadata/{innerRequest.id}": {
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "GetMetadataEntries Gets all metadata entries for a passed in party id",
        "operationId": "catena.catena_parties.CatenaParties_GetMetadataEntries",
        "parameters": [
          {
            "name": "innerRequest.id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "playerId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Groups.GetMetadataEntriesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/parties/healthz": {
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "GetServiceHealth",
        "operationId": "catena.catena_parties.CatenaParties_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/parties/create": {
      "post": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "AdminCreateParty Creates a new party, setting the leader and party members at creation time",
        "operationId": "catena.catena_parties.CatenaParties_AdminCreateParty",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.AdminCreatePartyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.AdminCreatePartyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/parties/update": {
      "patch": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "AdminUpdateParty Updates data for a party",
        "operationId": "catena.catena_parties.CatenaParties_AdminUpdateParty",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaParties.AdminUpdatePartyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.AdminUpdatePartyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/parties/{partyId}": {
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "AdminGetPartyByID Fetches data for a party given a party ID",
        "operationId": "catena.catena_parties.CatenaParties_AdminGetPartyById",
        "parameters": [
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.AdminGetPartyByIdResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/parties/list-parties": {
      "get": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "AdminListParties lists all parties",
        "operationId": "catena.catena_parties.CatenaParties_AdminListParties",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.AdminListPartiesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/parties/delete/{partyId}": {
      "delete": {
        "tags": [
          "CatenaParties"
        ],
        "summary": "AdminDeleteParty deletes a party given a party ID",
        "operationId": "catena.catena_parties.CatenaParties_AdminDeleteParty",
        "parameters": [
          {
            "name": "partyId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.AdminDeletePartyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/parties/delete-all": {
      "delete": {
        "tags": [
          "CatenaParties"
        ],
        "operationId": "catena.catena_parties.CatenaParties_AdminDeleteAllParties",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaParties.AdminDeleteAllPartiesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/remember_me": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_RememberLoginInfo",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.RememberLoginInfoResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminGetLoginInfo",
        "parameters": [
          {
            "name": "replayToken",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminGetLoginInfoResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminDeleteLoginInfo",
        "parameters": [
          {
            "name": "replayToken",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminDeleteLoginInfoResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/devices/{deviceId}": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminRegisterDeviceForAuth",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminRegisterDeviceForAuthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminRemoveDeviceForAuth",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminRemoveDeviceForAuthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      },
      "head": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminDeviceExistsForAuth",
        "parameters": [
          {
            "name": "deviceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminDeviceExistsForAuthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/devices": {
      "get": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminListDevicesForAuth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminListDevicesForAuthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/devices/search": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminSearchDevicesForAuth",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminSearchDevicesForAuthRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminSearchDevicesForAuthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/sign_up": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_SignUp",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaPlatformAuth.SignUpRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.SignUpResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/resend_verification": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_ResendVerification",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaPlatformAuth.ResendVerificationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.ResendVerificationResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/verify_email": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_VerifyEmailAddress",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaPlatformAuth.VerifyEmailAddressRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.VerifyEmailAddressResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/is_enabled/{feature}": {
      "get": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_IsAuthFeatureEnabled",
        "parameters": [
          {
            "name": "feature",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/Services.CatenaPlatformAuth.PlatformAuthFeature"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.IsAuthFeatureEnabledResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/email_users/list": {
      "get": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminListEmailUsers",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminListEmailUsersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/email_users/search": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminSearchEmailUsers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminSearchEmailUsersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminSearchEmailUsersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/platform_auth/email_users/delete": {
      "post": {
        "tags": [
          "CatenaPlatformAuth"
        ],
        "operationId": "catena.catena_platform_auth.CatenaPlatformAuth_AdminDeleteEmailUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminDeleteEmailUserRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaPlatformAuth.AdminDeleteEmailUserResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/fleets/deploy": {
      "post": {
        "tags": [
          "CatenaServerCatalog"
        ],
        "summary": "ScheduleConfigOnHost allows a user to schedule a config as defined by the process monitor job specification on a \r\nspecific host based on the criteria specified within the job configuration.",
        "operationId": "catena.catena_server_catalog.CatenaServerCatalog_AdminScheduleConfigOnHost",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.CatenaServerCatalog.AdminScheduleConfigOnHostRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.CatenaServerCatalog.AdminScheduleConfigOnHostResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/fleets/hosts": {
      "get": {
        "tags": [
          "CatenaServerCatalog"
        ],
        "summary": "List known hosts performs host filtering based on requirements",
        "operationId": "catena.catena_server_catalog.CatenaServerCatalog_AdminListKnownHosts",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.CatenaServerCatalog.AdminListKnownHostsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/fleets/hosts/{hostId}/action": {
      "post": {
        "tags": [
          "CatenaServerCatalog"
        ],
        "operationId": "catena.catena_server_catalog.CatenaServerCatalog_AdminExecuteAction",
        "parameters": [
          {
            "name": "hostId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.CatenaServerCatalog.AdminExecuteActionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.CatenaServerCatalog.AdminExecuteActionResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/request_match": {
      "post": {
        "tags": [
          "CatenaServerManager"
        ],
        "operationId": "catena.catena_server_manager.CatenaServerManager_RequestMatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.ServerManager.RequestMatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.ServerManager.RequestMatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/match_ready": {
      "post": {
        "tags": [
          "CatenaServerManager"
        ],
        "operationId": "catena.catena_server_manager.CatenaServerManager_MatchReady",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.ServerManager.MatchReadyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.ServerManager.MatchReadyResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/end_match": {
      "post": {
        "tags": [
          "CatenaServerManager"
        ],
        "operationId": "catena.catena_server_manager.CatenaServerManager_EndMatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.ServerManager.EndMatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.ServerManager.EndMatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/servers": {
      "post": {
        "tags": [
          "CatenaServerManager"
        ],
        "operationId": "catena.catena_server_manager.CatenaServerManager_ListServers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.ServerManager.ListServersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.ServerManager.ListServersResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/deallocate": {
      "post": {
        "tags": [
          "CatenaServerManager"
        ],
        "operationId": "catena.catena_server_manager.CatenaServerManager_AdminDeallocateServer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.ServerManager.AdminDeallocateServerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.ServerManager.AdminDeallocateServerResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server/allocate": {
      "post": {
        "tags": [
          "CatenaServerManager"
        ],
        "operationId": "catena.catena_server_manager.CatenaServerManager_AdminAllocateServer",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.ServerManager.AdminAllocateServerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.ServerManager.AdminAllocateServerResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server_releases/manifest": {
      "get": {
        "tags": [
          "CatenaServerReleases"
        ],
        "summary": "GetServerManifest Returns a manifest for releases and patches to apply to the server binary",
        "operationId": "catena.catena_server_releases.CatenaServerReleases_GetServerManifest",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaServerReleases.GetServerManifestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server_releases/create_server_release": {
      "post": {
        "tags": [
          "CatenaServerReleases"
        ],
        "summary": "AdminCreateServerRelease Creates a game server release",
        "operationId": "catena.catena_server_releases.CatenaServerReleases_AdminCreateServerRelease",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminCreateServerReleaseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminCreateServerReleaseResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server_releases/update_server_release": {
      "put": {
        "tags": [
          "CatenaServerReleases"
        ],
        "summary": "AdminUpdateServerRelease Updates a game server release",
        "operationId": "catena.catena_server_releases.CatenaServerReleases_AdminUpdateServerRelease",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminUpdateServerReleaseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminUpdateServerReleaseResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server_releases/delete_server_release": {
      "delete": {
        "tags": [
          "CatenaServerReleases"
        ],
        "summary": "AdminDeleteServerRelease Deletes a game server release",
        "operationId": "catena.catena_server_releases.CatenaServerReleases_AdminDeleteServerRelease",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminDeleteServerReleaseResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server_releases/create_server_patch": {
      "post": {
        "tags": [
          "CatenaServerReleases"
        ],
        "summary": "AdminCreateServerPatch Creates a game server patch",
        "operationId": "catena.catena_server_releases.CatenaServerReleases_AdminCreateServerPatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminCreateServerPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminCreateServerPatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server_releases/update_server_patch": {
      "put": {
        "tags": [
          "CatenaServerReleases"
        ],
        "summary": "AdminUpdateServerPatch Updates a game server patch",
        "operationId": "catena.catena_server_releases.CatenaServerReleases_AdminUpdateServerPatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminUpdateServerPatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminUpdateServerPatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/server_releases/delete_server_patch": {
      "delete": {
        "tags": [
          "CatenaServerReleases"
        ],
        "summary": "AdminDeleteServerPatch deletes a game server patch",
        "operationId": "catena.catena_server_releases.CatenaServerReleases_AdminDeleteServerPatch",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaServerReleases.AdminDeleteServerPatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/sessions": {
      "get": {
        "tags": [
          "CatenaSessions"
        ],
        "operationId": "catena.catena_sessions.CatenaSessions_AdminListSessions",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSessions.AdminListSessionsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/sessions/healthz": {
      "get": {
        "tags": [
          "CatenaSessions"
        ],
        "operationId": "catena.catena_sessions.CatenaSessions_GetServiceHealth",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Core.GetServiceHealthResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/transaction/report/get": {
      "post": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectTransactionGetReport",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetReportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetReportResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/transaction/user_agreement/get": {
      "post": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectTransactionGetUserAgreementInfo",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetUserAgreementInfoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetUserAgreementInfoResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/transaction/user_agreement/cancel": {
      "post": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectTransactionCancelAgreement",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionCancelAgreementRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionCancelAgreementResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/transaction/transaction/get": {
      "post": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectTransactionQueryTxn",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionQueryTxnRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionQueryTxnResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/transaction/get_user_info": {
      "post": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectTransactionGetUserInfo",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetUserInfoRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetUserInfoResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/user/app_ownership/{steamId}/{appId}": {
      "get": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectUserCheckAppOwnership",
        "parameters": [
          {
            "name": "steamId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectUserCheckAppOwnershipResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/inventory/item_defs/get": {
      "get": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectInventoryGetItemDefs",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectInventoryGetItemDefsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/app_ownership/{accountId}/{appId}": {
      "get": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminAccountCheckAppOwnership",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminAccountCheckAppOwnershipResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/direct/user/player_summaries": {
      "post": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminDirectUserGetPlayerSummaries",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectUserGetPlayerSummariesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectUserGetPlayerSummariesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/steam_diag/user/player_summaries": {
      "post": {
        "tags": [
          "CatenaSteamDiag"
        ],
        "operationId": "catena.catena_steam_diag.CatenaSteamDiag_AdminUserGetPlayerSummaries",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminUserGetPlayerSummariesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminUserGetPlayerSummariesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/generate_presigned_url": {
      "post": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "GeneratePresignedUrl Generates a presigned S3 URL for a given object key",
        "operationId": "catena.catena_titles.CatenaTitles_GeneratePresignedUrl",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.GeneratePresignedUrlRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.GeneratePresignedUrlResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/generate_presigned_url_from_uri": {
      "post": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "GeneratePresignedUrlFromUri Generates a presigned URL for a given URL",
        "operationId": "catena.catena_titles.CatenaTitles_GeneratePresignedUrlFromUri",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.GeneratePresignedUrlFromUriRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.GeneratePresignedUrlFromUriResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/titles": {
      "get": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "GetTitles Returns a list of game titles that are supported via this instance of Catena",
        "operationId": "catena.catena_titles.CatenaTitles_GetTitles",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.GetTitlesResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/titles/{titleId}/manifest": {
      "get": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "GetTitleManifest Returns a manifest for releases and patches that are required to play the game",
        "operationId": "catena.catena_titles.CatenaTitles_GetTitleManifest",
        "parameters": [
          {
            "name": "titleId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "platform",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.GetTitleManifestResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/create": {
      "post": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminCreateTitle Creates a game title",
        "operationId": "catena.catena_titles.CatenaTitles_AdminCreateTitle",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminCreateTitleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminCreateTitleResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/update": {
      "put": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminUpdateTitle Updates a game title",
        "operationId": "catena.catena_titles.CatenaTitles_AdminUpdateTitle",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminUpdateTitleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminUpdateTitleResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/delete": {
      "delete": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminDeleteTitle Deletes a game title",
        "operationId": "catena.catena_titles.CatenaTitles_AdminDeleteTitle",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminDeleteTitleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminDeleteTitleResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/create_title_release": {
      "post": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminCreateTitleRelease Creates a game title release",
        "operationId": "catena.catena_titles.CatenaTitles_AdminCreateTitleRelease",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminCreateTitleReleaseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminCreateTitleReleaseResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/update_title_release": {
      "put": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminUpdateTitleRelease Updates a game title release",
        "operationId": "catena.catena_titles.CatenaTitles_AdminUpdateTitleRelease",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminUpdateTitleReleaseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminUpdateTitleReleaseResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/delete_title_release": {
      "delete": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminDeleteTitleRelease Deletes a game title release",
        "operationId": "catena.catena_titles.CatenaTitles_AdminDeleteTitleRelease",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminDeleteTitleReleaseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminDeleteTitleReleaseResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/create_title_patch": {
      "post": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminCreateTitlePatch Creates a game title patch",
        "operationId": "catena.catena_titles.CatenaTitles_AdminCreateTitlePatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminCreateTitlePatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminCreateTitlePatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/update_title_patch": {
      "put": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminUpdateTitlePatch Updates a game title patch",
        "operationId": "catena.catena_titles.CatenaTitles_AdminUpdateTitlePatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminUpdateTitlePatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminUpdateTitlePatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/titles/delete_title_patch": {
      "delete": {
        "tags": [
          "CatenaTitles"
        ],
        "summary": "AdminDeleteTitlePatch deletes a game title patch",
        "operationId": "catena.catena_titles.CatenaTitles_AdminDeleteTitlePatch",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Services.CatenaTitles.AdminDeleteTitlePatchRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Services.CatenaTitles.AdminDeleteTitlePatchResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events/subscribe": {
      "get": {
        "tags": [
          "Events"
        ],
        "summary": "SubscribeToEvents",
        "operationId": "catena.events.Events_SubscribeToEvents",
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Events.SubscribeToEventsResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events/subscribe/tags": {
      "get": {
        "tags": [
          "Events"
        ],
        "operationId": "catena.events.Events_SubscribeToEventsByTag",
        "parameters": [
          {
            "name": "senderId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "eventTags",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Events.SubscribeToEventsByTagResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/events/emit": {
      "post": {
        "tags": [
          "Events"
        ],
        "summary": "EmitUpdateEvent",
        "operationId": "catena.events.Events_EmitUpdateEvent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.Events.EmitUpdateEventRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Events.EmitUpdateEventResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/admin/events/emit": {
      "post": {
        "tags": [
          "Events"
        ],
        "operationId": "catena.events.Events_AdminEmitUpdateEvent",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Catena.Events.AdminEmitUpdateEventRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Catena.Events.AdminEmitUpdateEventResponse"
                }
              }
            }
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Google.Rpc.Status"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Catena.CatenaServerCatalog.AdminExecuteActionRequest": {
        "type": "object",
        "properties": {
          "hostId": {
            "type": "string"
          },
          "request": {
            "$ref": "#/components/schemas/Pxmon.ExecuteActionRequest"
          }
        },
        "additionalProperties": false
      },
      "Catena.CatenaServerCatalog.AdminExecuteActionResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Catena.CatenaServerCatalog.AdminListKnownHostsResponse": {
        "type": "object",
        "properties": {
          "hosts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.CatenaServerCatalog.Host"
            }
          }
        },
        "additionalProperties": false
      },
      "Catena.CatenaServerCatalog.AdminScheduleConfigOnHostRequest": {
        "type": "object",
        "properties": {
          "config": {
            "$ref": "#/components/schemas/Pxmon.Config"
          }
        },
        "additionalProperties": false
      },
      "Catena.CatenaServerCatalog.AdminScheduleConfigOnHostResponse": {
        "type": "object",
        "properties": {
          "hostId": {
            "type": "string"
          },
          "responses": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Catena.CatenaServerCatalog.Host": {
        "type": "object",
        "properties": {
          "hostname": {
            "type": "string"
          },
          "hostId": {
            "type": "string"
          },
          "sidecarVersion": {
            "type": "string"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "lastPingEpoch": {
            "type": "integer",
            "format": "int64"
          },
          "Available": {
            "type": "boolean",
            "description": "Available for allocations?"
          },
          "processes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.CatenaServerCatalog.JobProcesses"
            },
            "description": "Jobs running on host"
          }
        },
        "additionalProperties": false
      },
      "Catena.CatenaServerCatalog.JobProcesses": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string"
          },
          "process": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "numRestarts": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false,
        "description": "JobProcesses is a more detailed list of processes for a specific host."
      },
      "Catena.Core.ComponentHealth": {
        "type": "object",
        "properties": {
          "component": {
            "type": "string"
          },
          "healthy": {
            "type": "boolean"
          },
          "status": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Catena.Core.GetServiceHealthResponse": {
        "type": "object",
        "properties": {
          "healthy": {
            "type": "boolean"
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.Core.ComponentHealth"
            }
          }
        },
        "additionalProperties": false
      },
      "Catena.Core.TrustedServerPermission": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Catena.Events.AdminEmitUpdateEventRequest": {
        "type": "object",
        "properties": {
          "nestedEvent": {
            "$ref": "#/components/schemas/Catena.Events.Event"
          },
          "recipientIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "eventTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "broadcast": {
            "type": "boolean",
            "description": "affects how an empty recipient list is treated when tags are present; required to broadcast"
          }
        },
        "additionalProperties": false
      },
      "Catena.Events.AdminEmitUpdateEventResponse": {
        "type": "object",
        "properties": {
          "broadcastSuccess": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Catena.Events.EmitUpdateEventRequest": {
        "type": "object",
        "properties": {
          "nestedEvent": {
            "$ref": "#/components/schemas/Catena.Events.Event"
          },
          "recipientIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "eventTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "broadcast": {
            "type": "boolean",
            "description": "affects how an empty recipient list is treated when tags are present; required to broadcast"
          }
        },
        "additionalProperties": false
      },
      "Catena.Events.EmitUpdateEventResponse": {
        "type": "object",
        "properties": {
          "broadcastSuccess": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Catena.Events.EmptyEvent": {
        "type": "object",
        "additionalProperties": false,
        "description": "EmptyEvent is used to send pings through the event service, eg to get around bugs where a stream is not opened until the first request comes through, or to do a heartbeat"
      },
      "Catena.Events.Event": {
        "type": "object",
        "properties": {
          "eventId": {
            "type": "string"
          },
          "recipientId": {
            "type": "string"
          },
          "anyEvent": {
            "$ref": "#/components/schemas/Google.Protobuf.WellKnownTypes.Any"
          },
          "partyUpdateEvent": {
            "$ref": "#/components/schemas/Services.CatenaParties.PartyUpdateEvent"
          },
          "matchmakingStatusUpdateEvent": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.MatchmakingStatusUpdateEvent"
          },
          "emptyEvent": {
            "$ref": "#/components/schemas/Catena.Events.EmptyEvent"
          },
          "authenticationEvent": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.AuthenticationEvent"
          },
          "newMatchEvent": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.NewMatchEvent"
          },
          "announcementEvent": {
            "$ref": "#/components/schemas/Services.CatenaAnnouncements.AnnouncementEvent"
          },
          "accountsEvent": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.AccountsEvent"
          },
          "friendsEvent": {
            "$ref": "#/components/schemas/Services.CatenaFriends.FriendsEvent"
          }
        },
        "additionalProperties": false
      },
      "Catena.Events.SubscribeToEventsByTagResponse": {
        "type": "object",
        "properties": {
          "event": {
            "$ref": "#/components/schemas/Catena.Events.Event"
          },
          "eventTags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Catena.Events.SubscribeToEventsResponse": {
        "type": "object",
        "properties": {
          "event": {
            "$ref": "#/components/schemas/Catena.Events.Event"
          }
        },
        "additionalProperties": false
      },
      "Catena.Groups.CreateMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "entryKey": {
            "type": "string",
            "description": "The key in the metadata to be added"
          },
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          }
        },
        "additionalProperties": false
      },
      "Catena.Groups.CreateMetadataEntryResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Catena.Groups.DeleteJsonMetadataType": {
        "enum": [
          0,
          1
        ],
        "description": "If you are deleting a json, can choose whether to delete the entire entry or a partial part of an entry\r\nCurrently, only whole property removal is supported.\r\nRemoval of elements in a json array (e.g. trying to remove \"value\" from json {\"array\":[\"value\",\"value2\"]})\r\nis not currently supported by DeleteMetadataEntryRequest.\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "format": "int32",
        "x-enumDescriptions": {
          "0": "EntireEntry",
          "1": "PartialEntry"
        }
      },
      "Catena.Groups.DeleteMetadataEntryResponse": {
        "type": "object",
        "properties": {
          "entryDeleted": {
            "type": "boolean",
            "description": "If the entry was found in the database and deleted"
          }
        },
        "additionalProperties": false
      },
      "Catena.Groups.Entity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "entityType": {
            "$ref": "#/components/schemas/Catena.Groups.EntityType"
          },
          "entities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.Groups.Entity"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false,
        "description": "We rely on the entity type for storing data about a user in the session token, this is crucial to enable"
      },
      "Catena.Groups.EntityMetadata": {
        "type": "object",
        "properties": {
          "stringPayload": {
            "type": "string"
          },
          "intPayload": {
            "type": "integer",
            "format": "int64"
          },
          "jsonPayload": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Catena.Groups.EntityType": {
        "enum": [
          "ENTITY_TYPE_UNSPECIFIED",
          "ENTITY_TYPE_GENERIC",
          "ENTITY_TYPE_ACCOUNT",
          "ENTITY_TYPE_GROUP",
          "ENTITY_TYPE_MATCH",
          0,
          1,
          2,
          3,
          4
        ],
        "description": "Entities\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Generic",
          "2": "Account",
          "3": "Group",
          "4": "Match"
        }
      },
      "Catena.Groups.GetMetadataEntriesResponse": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Catena.Groups.GetMetadataEntryResponse": {
        "type": "object",
        "properties": {
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          }
        },
        "additionalProperties": false
      },
      "Catena.Groups.MetadataEntry": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          }
        },
        "additionalProperties": false,
        "description": "Simple message containing a metadata key-value pair so that a metadata entry can be sent in update events"
      },
      "Catena.Groups.MetadataMap": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false,
        "description": "Simple message containing a metadata map so that metadata entries can be sent in update events (maps are by default not supported in oneof)"
      },
      "Catena.Groups.UpdateMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "entryKey": {
            "type": "string",
            "description": "The key in the metadata whose entry needs to be changed"
          },
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          },
          "updateOperationType": {
            "$ref": "#/components/schemas/Catena.Groups.UpdateMetadataOperationType"
          }
        },
        "additionalProperties": false
      },
      "Catena.Groups.UpdateMetadataEntryResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Catena.Groups.UpdateMetadataOperationType": {
        "enum": [
          "OVERWRITE",
          "APPEND",
          "CREATE_IF_NECESSARY",
          0,
          1,
          2
        ],
        "description": "When updating a metadata entry, the entry can either be overwritten (supported by all types) or appended (supported by string and json)\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Overwrite",
          "1": "Append",
          "2": "CreateIfNecessary"
        }
      },
      "Catena.MatchBroker.Match": {
        "type": "object",
        "properties": {
          "matchId": {
            "type": "string"
          },
          "playerIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "TODO: other required match properties and custom data passing fields"
          },
          "matchProperties": {
            "type": "string",
            "description": "A JSON object that contains all the custom match properties\r\nMay be empty"
          },
          "playerProperties": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A JSON object per-player where the map key is a player_id in the player_ids field\r\nMay contain values for none, some, or all players"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.AdminAllocateServerRequest": {
        "type": "object",
        "properties": {
          "match": {
            "$ref": "#/components/schemas/Catena.MatchBroker.Match"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.AdminAllocateServerResponse": {
        "type": "object",
        "properties": {
          "serverId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.AdminDeallocateServerRequest": {
        "type": "object",
        "properties": {
          "serverId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.AdminDeallocateServerResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "state": {
            "$ref": "#/components/schemas/Catena.ServerManager.ServerState"
          },
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.ServerManager.ServerMatchInfo"
            }
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.EndMatchRequest": {
        "type": "object",
        "properties": {
          "serverId": {
            "type": "string"
          },
          "matchId": {
            "type": "string"
          },
          "hintFlags": {
            "$ref": "#/components/schemas/Catena.ServerManager.HintFlag"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.EndMatchResponse": {
        "type": "object",
        "properties": {
          "matchId": {
            "type": "string"
          },
          "hintFlags": {
            "$ref": "#/components/schemas/Catena.ServerManager.HintFlag"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.HintFlag": {
        "enum": [
          "HINT_FLAG_NO_HINT_FLAGS",
          "HINT_FLAG_SHUTDOWN",
          "HINT_FLAG_WILLING_TO_WAIT",
          "HINT_FLAG_WILLING_TO_SHUTDOWN",
          "HINT_FLAG_FULL",
          "HINT_FLAG_NOT_FULL",
          0,
          1,
          2,
          4,
          8,
          16
        ],
        "description": "Optional flags hinting intention by requester/responder\r\nThese are bit flags - values must be powers of 2!\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "NoHintFlags",
          "1": "Shutdown",
          "2": "WillingToWait",
          "4": "WillingToShutdown",
          "8": "Full",
          "16": "NotFull"
        }
      },
      "Catena.ServerManager.ListServersRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "Catena.ServerManager.ListServersResponse": {
        "type": "object",
        "properties": {
          "servers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.ServerManager.ServerInfo"
            }
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.MatchReadyRequest": {
        "type": "object",
        "properties": {
          "serverId": {
            "type": "string"
          },
          "matchId": {
            "type": "string"
          },
          "connectionDetails": {
            "type": "string",
            "description": "URI, IP+port, etc - not prescribed. Used as the default for any player not listed in per_player_connection_details"
          },
          "hintFlags": {
            "$ref": "#/components/schemas/Catena.ServerManager.HintFlag"
          },
          "perPlayerConnectionDetails": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "A connection string to use for any specific player in the match. May be left empty."
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.MatchReadyResponse": {
        "type": "object",
        "properties": {
          "matchId": {
            "type": "string",
            "description": "TODO: anything the server needs to know from the backend - proceed with match? (what if a client can't get the ready event?)"
          },
          "hintFlags": {
            "$ref": "#/components/schemas/Catena.ServerManager.HintFlag"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.RequestMatchRequest": {
        "type": "object",
        "properties": {
          "serverId": {
            "type": "string"
          },
          "requirements": {
            "type": "string",
            "description": "TODO: define filtering rules that can be applied"
          },
          "hintFlags": {
            "$ref": "#/components/schemas/Catena.ServerManager.HintFlag"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.RequestMatchResponse": {
        "type": "object",
        "properties": {
          "match": {
            "$ref": "#/components/schemas/Catena.MatchBroker.Match"
          },
          "hintFlags": {
            "$ref": "#/components/schemas/Catena.ServerManager.HintFlag"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.ServerInfo": {
        "type": "object",
        "properties": {
          "serverId": {
            "type": "string"
          },
          "requestedMatch": {
            "type": "boolean",
            "description": "TODO: replace with \"healthy\"? what does the server manager consider healthy? is it ongoing?"
          },
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.ServerManager.ServerMatchInfo"
            },
            "description": "These are connection strings the server has returned"
          },
          "isFull": {
            "type": "boolean"
          },
          "originatingAllocator": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.ServerMatchInfo": {
        "type": "object",
        "properties": {
          "matchId": {
            "type": "string"
          },
          "connectionString": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Catena.ServerManager.ServerState": {
        "enum": [
          "SERVER_STATE_UNSPECIFIED",
          "SERVER_STATE_PENDING",
          "SERVER_STATE_AVAILABLE",
          "SERVER_STATE_FULL",
          0,
          1,
          2,
          3
        ],
        "description": "The server state as in its capability to request matches\r\nNote: This is intentionally a subset of the specific states that exist inside the Catena Match Broker\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Pending",
          "2": "Available",
          "3": "Full"
        }
      },
      "Google.Protobuf.WellKnownTypes.Any": {
        "required": [
          "@type"
        ],
        "type": "object",
        "properties": {
          "@type": {
            "type": "string"
          }
        },
        "additionalProperties": {}
      },
      "Google.Rpc.Status": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Google.Protobuf.WellKnownTypes.Any"
            }
          }
        },
        "additionalProperties": false
      },
      "Pxmon.Artifact": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "remote": {
            "type": "string"
          },
          "integrity": {
            "$ref": "#/components/schemas/Pxmon.Integrity"
          },
          "config": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Pxmon.Config": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "artifacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pxmon.Artifact"
            }
          },
          "job": {
            "$ref": "#/components/schemas/Pxmon.Job"
          }
        },
        "additionalProperties": false,
        "description": "Config is the config for a job that can run on a pxmon supported node.\r\nit is a name, definition of artifacts and a job."
      },
      "Pxmon.Exec": {
        "type": "object",
        "properties": {
          "cmd": {
            "type": "string"
          },
          "args": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "environment": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false,
        "description": "Exec represents the command, arguments and environment for starting a process."
      },
      "Pxmon.ExecuteActionRequest": {
        "type": "object",
        "properties": {
          "targetPx": {
            "type": "string"
          },
          "stateAfterAction": {
            "type": "string"
          },
          "req": {
            "$ref": "#/components/schemas/Pxmon.HttpRequest"
          }
        },
        "additionalProperties": false
      },
      "Pxmon.HttpRequest": {
        "type": "object",
        "properties": {
          "method": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "path": {
            "type": "string"
          },
          "port": {
            "type": "integer",
            "format": "int32"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Pxmon.Include": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "dest": {
            "type": "string"
          },
          "executable": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Include includes an artifact in the local directory for a job."
      },
      "Pxmon.Integrity": {
        "type": "object",
        "properties": {
          "alg": {
            "type": "string"
          },
          "hash": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Pxmon.Job": {
        "type": "object",
        "properties": {
          "requirements": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "exec": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pxmon.Exec"
            },
            "description": "TODO: exec is currently a repeated field, it should not be. Originally I was experimenting with allowing a job to start multiple processes, but that got too complex."
          },
          "include": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Pxmon.Include"
            }
          },
          "restartPolicy": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Job is a job that can be run on a pxmon supported node,\r\nit defines requirements, the actual process to execute\r\na restart policy and artifacts to include in the execution of the node."
      },
      "Services.CatenaAccounts.Account": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "GUID for this account"
          },
          "displayName": {
            "type": "string",
            "description": "display name for this account"
          },
          "authRole": {
            "type": "string",
            "description": "The auth level of the account"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            },
            "description": "Metadata associated with the account"
          },
          "platforms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.PublicCommon.Platform"
            },
            "description": "List of platforms that this account is linked to"
          }
        },
        "additionalProperties": false,
        "description": "Bundled data that describes an account and its metadata."
      },
      "Services.CatenaAccounts.AccountsEvent": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.AccountsUpdateType"
          },
          "accountId": {
            "type": "string"
          },
          "isNewAccount": {
            "type": "boolean"
          },
          "newPlatformType": {
            "$ref": "#/components/schemas/Services.PublicCommon.Platform"
          },
          "platforms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.PublicCommon.Platform"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.AccountsUpdateType": {
        "enum": [
          "CREATE_OR_GET_ACCOUNT",
          "LINK_ACCOUNT_TO_PLATFORM",
          0,
          1
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "CreateOrGetAccount",
          "1": "LinkAccountToPlatform"
        }
      },
      "Services.CatenaAccounts.AdminCreateAccountRequest": {
        "type": "object",
        "properties": {
          "displayName": {
            "type": "string"
          },
          "authRole": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.CreateAccountResponse": {
        "type": "object",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.CreateMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "entryKey": {
            "type": "string"
          },
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.CreateMetadataEntryResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAccounts.CreateOrGetAccountFromTokenRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAccounts.CreateOrGetAccountFromTokenResponse": {
        "type": "object",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.DeleteAccountRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.DeleteAccountResponse": {
        "type": "object",
        "properties": {
          "accountDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.DeleteMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "entryKey": {
            "type": "string"
          },
          "jsonHandlingType": {
            "$ref": "#/components/schemas/Catena.Groups.DeleteJsonMetadataType"
          },
          "propertiesToRemovePaths": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.DeleteMetadataEntryResponse": {
        "type": "object",
        "properties": {
          "entryDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.GetAccountByIdResponse": {
        "type": "object",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.GetAccountIdsRequest": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.GetAccountIdsResponse": {
        "type": "object",
        "properties": {
          "accountIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.GetMetadataEntriesResponse": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.GetMetadataEntryResponse": {
        "type": "object",
        "properties": {
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.LinkAccountToPlatformRequest": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "The session id to link into the currently logged in session id"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.LinkAccountToPlatformResponse": {
        "type": "object",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
          },
          "accountLinked": {
            "type": "boolean",
            "description": "indicator of success of linking existing account to new auth provider"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.ListAccountsResponse": {
        "type": "object",
        "properties": {
          "accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.PlatformAccountId": {
        "type": "object",
        "properties": {
          "platform": {
            "$ref": "#/components/schemas/Services.PublicCommon.Platform"
          },
          "id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.ServerCreateAccountRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "platformAccountIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaAccounts.PlatformAccountId"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.ServerCreateAccountResponse": {
        "type": "object",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.ServerDeleteAccountRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.ServerDeleteAccountResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAccounts.ServerLinkAccountRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "platformAccountId": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.PlatformAccountId"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.ServerLinkAccountResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAccounts.UpdateAccountRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "The id of the account to update"
          },
          "account": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
          },
          "accountMask": {
            "type": "string"
          },
          "metadataDeletionKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of metadata keys to delete"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.UpdateAccountResponse": {
        "type": "object",
        "properties": {
          "account": {
            "$ref": "#/components/schemas/Services.CatenaAccounts.Account"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.UpdateMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "entryKey": {
            "type": "string"
          },
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          },
          "updateOperationType": {
            "$ref": "#/components/schemas/Catena.Groups.UpdateMetadataOperationType"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAccounts.UpdateMetadataEntryResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAnnouncements.AnnouncementEvent": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminCreateApiKeyPolicyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminCreateApiKeyPolicyResponse": {
        "type": "object",
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/Services.CatenaApiKeys.ApiKeyPolicy"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminCreateApiKeyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "policyId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminCreateApiKeyResponse": {
        "type": "object",
        "properties": {
          "apiKey": {
            "$ref": "#/components/schemas/Services.CatenaApiKeys.ApiKey"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminDeleteApiKeyPolicyResponse": {
        "type": "object",
        "properties": {
          "policyDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminDeleteApiKeyResponse": {
        "type": "object",
        "properties": {
          "apiKeyDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminGetApiKeyPermissionsResponse": {
        "type": "object",
        "properties": {
          "permissions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.Core.TrustedServerPermission"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminGetApiKeyPoliciesResponse": {
        "type": "object",
        "properties": {
          "policies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaApiKeys.ApiKeyPolicy"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminGetApiKeysResponse": {
        "type": "object",
        "properties": {
          "apiKeys": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaApiKeys.ApiKey"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminUpdateApiKeyPolicyRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminUpdateApiKeyPolicyResponse": {
        "type": "object",
        "properties": {
          "policy": {
            "$ref": "#/components/schemas/Services.CatenaApiKeys.ApiKeyPolicy"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminUpdateApiKeyRequest": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "policyId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.AdminUpdateApiKeyResponse": {
        "type": "object",
        "properties": {
          "apiKey": {
            "$ref": "#/components/schemas/Services.CatenaApiKeys.ApiKey"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.ApiKey": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "createdOn": {
            "type": "string"
          },
          "lastUsedOn": {
            "type": "string"
          },
          "policy": {
            "$ref": "#/components/schemas/Services.CatenaApiKeys.ApiKeyPolicy"
          },
          "createdBy": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.ApiKeyPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "createdBy": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaApiKeys.TestApiKeyResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AdminAddOrUpdateProviderConfigRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
          },
          "providerConfig": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.ProviderConfig"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AdminAddOrUpdateProviderConfigResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AdminGetAvailableProvidersResponse": {
        "type": "object",
        "properties": {
          "providers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaAuthentication.ProviderWithRawConfig"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AdminGetProviderConfigResponse": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
          },
          "providerConfig": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.ProviderConfig"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AdminToggleProviderRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
          },
          "isEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AdminToggleProviderResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AuthenticationEvent": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.AuthenticationUpdateType"
          },
          "catenaAccountId": {
            "type": "string"
          },
          "platformAccountId": {
            "type": "string"
          },
          "platform": {
            "$ref": "#/components/schemas/Services.PublicCommon.Platform"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.AuthenticationUpdateType": {
        "enum": [
          "LOGOUT",
          "LOGIN",
          0,
          1
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Logout",
          "1": "Login"
        }
      },
      "Services.CatenaAuthentication.AwaitSessionResponse": {
        "type": "object",
        "properties": {
          "successfulAuth": {
            "type": "boolean"
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.GetEnabledProvidersResponse": {
        "type": "object",
        "properties": {
          "enabledProviders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.LoginWithProviderRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
          },
          "payload": {
            "type": "string",
            "description": "provider-specific auth token (username for unsafe provider)"
          }
        },
        "additionalProperties": false,
        "example": {
          "provider": 1,
          "payload": "test01"
        }
      },
      "Services.CatenaAuthentication.LoginWithProviderResponse": {
        "type": "object",
        "properties": {
          "redirectUri": {
            "type": "string",
            "description": "Redirect URI for the browser to use if we are authenticating via a website with an OAuth provider. Not returned if authenticating with a game client."
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.LogoutResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaAuthentication.Provider": {
        "enum": [
          "PROVIDER_UNSPECIFIED",
          "PROVIDER_UNSAFE",
          "PROVIDER_DISCORD_WEB",
          "PROVIDER_GOOGLE_WEB",
          "PROVIDER_APPLE_WEB",
          "PROVIDER_TWITCH_WEB",
          "PROVIDER_STEAM_WEB",
          "PROVIDER_ITCH_WEB",
          "PROVIDER_AMAZON_WEB",
          "PROVIDER_EPIC_WEB",
          "PROVIDER_OFFICE365_WEB",
          "PROVIDER_STEAM",
          "PROVIDER_DEVICE",
          "PROVIDER_REMEMBER_ME",
          "PROVIDER_EMAIL_SIGN_UP",
          "PROVIDER_BATTLENET_WEB",
          "PROVIDER_CATENA",
          "PROVIDER_CUSTOM",
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          13,
          14,
          15,
          98,
          99
        ],
        "description": "Accepted auth providers.\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Unsafe",
          "2": "DiscordWeb",
          "3": "GoogleWeb",
          "4": "AppleWeb",
          "5": "TwitchWeb",
          "6": "SteamWeb",
          "7": "ItchWeb",
          "8": "AmazonWeb",
          "9": "EpicWeb",
          "10": "Office365Web",
          "11": "Steam",
          "12": "Device",
          "13": "RememberMe",
          "14": "EmailSignUp",
          "15": "BattlenetWeb",
          "98": "Catena",
          "99": "Custom"
        }
      },
      "Services.CatenaAuthentication.ProviderConfig": {
        "type": "object",
        "properties": {
          "providerClientId": {
            "type": "string"
          },
          "providerClientSecret": {
            "type": "string"
          },
          "providerRedirectUri": {
            "type": "string"
          },
          "providerIsEnabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Accepted auth provider configs."
      },
      "Services.CatenaAuthentication.ProviderWithRawConfig": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaAuthentication.Provider"
          },
          "rawConfig": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminAddCatalogItemPurchasePriceRequest": {
        "type": "object",
        "properties": {
          "priceKey": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItemPriceKey"
          },
          "amount": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminAddCatalogItemPurchasePriceResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminCancelSubscriptionRequest": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminCancelSubscriptionResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminCreateCatalogItemRequest": {
        "type": "object",
        "properties": {
          "catalogItemName": {
            "type": "string"
          },
          "catalogItemDescription": {
            "type": "string"
          },
          "catalogItemPublished": {
            "type": "boolean"
          },
          "catalogItemTags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItemTag"
            }
          },
          "catalogItemCustomItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminCreateCatalogItemResponse": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminDecrementAccountCountableCatalogItemResponse": {
        "type": "object",
        "properties": {
          "newCount": {
            "type": "integer",
            "format": "int64"
          },
          "decrementSuccessful": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminDeleteCatalogItemPurchasePriceRequest": {
        "type": "object",
        "properties": {
          "priceKey": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItemPriceKey"
          },
          "amount": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminDeleteCatalogItemPurchasePriceResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminDeleteCatalogItemResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetAccountCatalogItemsResponse": {
        "type": "object",
        "properties": {
          "catalogItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminGetAccountCatalogItemsResponseCatalogItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetAccountCatalogItemsResponseCatalogItem": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          },
          "isOwned": {
            "type": "boolean"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "customItemId": {
            "type": "string"
          },
          "lockoutFlags": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminLockoutFlags"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetAccountOwnsCatalogItemResponse": {
        "type": "object",
        "properties": {
          "isOwned": {
            "type": "boolean"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetCatalogItemPurchasePricesRequest": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.PriceTypeFilter"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetCatalogItemPurchasePricesResponse": {
        "type": "object",
        "properties": {
          "prices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItemPrice"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetCatalogItemsResponse": {
        "type": "object",
        "properties": {
          "catalogItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetMostRecentOwnershipChangeResponse": {
        "type": "object",
        "properties": {
          "record": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.OwnershipChangeRecord"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetOwnershipChangeHistoryResponse": {
        "type": "object",
        "properties": {
          "records": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.OwnershipChangeRecord"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetProviderCatalogItemDataResponse": {
        "type": "object",
        "properties": {
          "providerItemData": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.ProviderCatalogItemData"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetSubscriptionsRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "accountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminGetSubscriptionsResponse": {
        "type": "object",
        "properties": {
          "subscriptionIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminIncrementAccountCountableCatalogItemResponse": {
        "type": "object",
        "properties": {
          "newCount": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminListActiveProvidersResponse": {
        "type": "object",
        "properties": {
          "orderProviders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "externalItemProviders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminListSupportedProvidersResponse": {
        "type": "object",
        "properties": {
          "orderProviders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "externalItemProviders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminLockoutFlags": {
        "type": "object",
        "properties": {
          "prohibitNonAdminUpdate": {
            "$ref": "#/components/schemas/Services.PublicCommon.NullableBool"
          }
        },
        "additionalProperties": false,
        "description": "Lockout flags as they are exposed to admins\r\nThese may be null during a set if they should be left unchanged but should not be null during a get"
      },
      "Services.CatenaEntitlements.AdminModifyProviderCatalogItemDataRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "catalogItemId": {
            "type": "string"
          },
          "operation": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.ModifyProviderCatalogItemDataOperation"
          },
          "steamApp": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamAppProviderCatalogItemData"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminModifyProviderCatalogItemDataResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminPlaceOrderWithProviderRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "order": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.Order"
          },
          "steam": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderOrderMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminPlaceOrderWithProviderResponse": {
        "type": "object",
        "properties": {
          "createdSuccessfully": {
            "type": "boolean"
          },
          "orderId": {
            "type": "string"
          },
          "steam": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderOrderResultDetails"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminRefundOrderWithProviderResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminRemoveProviderCatalogItemDataResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminRevokeAccountCatalogItemResponse": {
        "type": "object",
        "properties": {
          "wasOwned": {
            "type": "boolean"
          },
          "previousCount": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminSetAccountCountableCatalogItemRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "catalogItemId": {
            "type": "string"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "operation": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.ExtendedOperation"
          },
          "lockoutFlags": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.AdminLockoutFlags"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminSetAccountCountableCatalogItemResponse": {
        "type": "object",
        "properties": {
          "previousCount": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminStartSubscriptionWithProviderRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "subscription": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.Subscription"
          },
          "steam": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderSubscriptionMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminStartSubscriptionWithProviderResponse": {
        "type": "object",
        "properties": {
          "createdSuccessfully": {
            "type": "boolean"
          },
          "orderId": {
            "type": "string"
          },
          "steam": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderSubscriptionResultDetails"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminUpdateCatalogItemPurchasePriceRequest": {
        "type": "object",
        "properties": {
          "priceKey": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItemPriceKey"
          },
          "amount": {
            "type": "integer",
            "format": "int64"
          },
          "existingAmount": {
            "type": "integer",
            "format": "int64"
          },
          "updatedPriceKey": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItemPriceKey"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminUpdateCatalogItemPurchasePriceResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminUpdateCatalogItemRequest": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "published": {
            "type": "boolean"
          },
          "tagUpdates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.TagUpdate"
            }
          },
          "customItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.AdminUpdateCatalogItemResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.CancelSubscriptionRequest": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string",
            "description": "Provider may be unspecified"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.CancelSubscriptionResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.CatalogItem": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "published": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.CatalogItemTag"
            }
          },
          "customItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.CatalogItemPrice": {
        "type": "object",
        "properties": {
          "provider": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int64"
          },
          "currency": {
            "type": "string"
          },
          "amount": {
            "type": "integer",
            "format": "int64"
          },
          "subscriptionInterval": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SubscriptionInterval"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.CatalogItemPriceKey": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          },
          "provider": {
            "type": "string",
            "description": "May be empty"
          },
          "quantity": {
            "type": "integer",
            "format": "int64"
          },
          "currency": {
            "type": "string"
          },
          "subscriptionInterval": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SubscriptionInterval"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.CatalogItemTag": {
        "type": "object",
        "properties": {
          "tag": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.EntitlementProvider": {
        "enum": [
          "ENTITLEMENT_PROVIDER_UNSPECIFIED",
          "ENTITLEMENT_PROVIDER_STEAM",
          "ENTITLEMENT_PROVIDER_STEAM_APP",
          0,
          6,
          7
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "6": "Steam",
          "7": "SteamApp"
        }
      },
      "Services.CatenaEntitlements.ExecutePreparedOffersRequest": {
        "type": "object",
        "properties": {
          "preparedOrders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.PreparedOrderWithQuantity"
            }
          },
          "accountId": {
            "type": "string"
          },
          "steam": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderOrderMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ExecutePreparedOffersResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "orderId": {
            "type": "string"
          },
          "steam": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderOrderResultDetails"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ExtendedOperation": {
        "enum": [
          0,
          1,
          2,
          3
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "format": "int32",
        "x-enumDescriptions": {
          "0": "Default",
          "1": "CountOnly",
          "2": "LockoutFlagsOnly",
          "3": "CountAndLockoutFlags"
        }
      },
      "Services.CatenaEntitlements.GetAccountCatalogItemsResponse": {
        "type": "object",
        "properties": {
          "catalogItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.GetAccountCatalogItemsResponseCatalogItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.GetAccountCatalogItemsResponseCatalogItem": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          },
          "isOwned": {
            "type": "boolean"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "customItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.GetAccountOwnsCatalogItemResponse": {
        "type": "object",
        "properties": {
          "isOwned": {
            "type": "boolean"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.GetSubscriptionsRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.GetSubscriptionsResponse": {
        "type": "object",
        "properties": {
          "subscriptionIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ModifyProviderCatalogItemDataOperation": {
        "enum": [
          "MODIFY_PROVIDER_CATALOG_ITEM_DATA_OPERATION_UNSPECIFIED",
          "MODIFY_PROVIDER_CATALOG_ITEM_DATA_OPERATION_SET",
          "MODIFY_PROVIDER_CATALOG_ITEM_DATA_OPERATION_UPDATE",
          0,
          1,
          2
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Set",
          "2": "Update"
        }
      },
      "Services.CatenaEntitlements.Order": {
        "type": "object",
        "properties": {
          "granteeId": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.OrderItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.OrderItem": {
        "type": "object",
        "properties": {
          "itemId": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "pricePerItem": {
            "type": "integer",
            "format": "int64"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.OwnershipChangeRecord": {
        "type": "object",
        "properties": {
          "increment": {
            "type": "integer",
            "format": "int64"
          },
          "agent": {
            "type": "string"
          },
          "changeType": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.OwnershipChangeType"
          },
          "description": {
            "type": "string"
          },
          "timestamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.OwnershipChangeType": {
        "enum": [
          "OWNERSHIP_CHANGE_TYPE_UNSPECIFIED",
          "OWNERSHIP_CHANGE_TYPE_ORDER",
          "OWNERSHIP_CHANGE_TYPE_REFUND",
          "OWNERSHIP_CHANGE_TYPE_KNOWN",
          "OWNERSHIP_CHANGE_TYPE_ADMIN",
          0,
          1,
          2,
          3,
          4
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Order",
          "2": "Refund",
          "3": "Known",
          "4": "Admin"
        }
      },
      "Services.CatenaEntitlements.PlayerFacingPreparedOffer": {
        "type": "object",
        "properties": {
          "offerId": {
            "type": "string"
          },
          "itemId": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "priceDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.PlayerFacingPreparedOfferPrice"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.PlayerFacingPreparedOfferPrice": {
        "type": "object",
        "properties": {
          "quantity": {
            "type": "integer",
            "description": "The number of items this order would purchase",
            "format": "int64"
          },
          "amount": {
            "type": "integer",
            "description": "The price in the specified currency",
            "format": "int64"
          },
          "subscriptionInterval": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SubscriptionInterval"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.PrepareOffersForProviderRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "since we are making this request on behalf of a player rather than initiated by a player, we must pass an account id in the request"
          },
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "currency": {
            "type": "string"
          },
          "tagFilter": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "includeUnpublished": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.PrepareOffersForProviderResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.PlayerFacingPreparedOffer"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.PreparedOrderWithQuantity": {
        "type": "object",
        "properties": {
          "preparedOrder": {
            "type": "string"
          },
          "quantity": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.PriceTypeFilter": {
        "enum": [
          "PRICE_TYPE_FILTER_UNSPECIFIED",
          "PRICE_TYPE_FILTER_PURCHASE",
          "PRICE_TYPE_FILTER_SUBSCRIPTION",
          0,
          1,
          2
        ],
        "description": "These are flags and must be powers of 2!\r\nDefault/unspecified returns purchase prices only (equivalent to when value is 1)\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Purchase",
          "2": "Subscription"
        }
      },
      "Services.CatenaEntitlements.ProviderCatalogItemData": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "steamApp": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamAppProviderCatalogItemData"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerCancelSubscriptionRequest": {
        "type": "object",
        "properties": {
          "subscriptionId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerCancelSubscriptionResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerDecrementAccountCountableCatalogItemResponse": {
        "type": "object",
        "properties": {
          "newCount": {
            "type": "integer",
            "format": "int64"
          },
          "decrementSuccessful": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerGetAccountCatalogItemsResponse": {
        "type": "object",
        "properties": {
          "catalogItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaEntitlements.ServerGetAccountCatalogItemsResponseCatalogItem"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerGetAccountCatalogItemsResponseCatalogItem": {
        "type": "object",
        "properties": {
          "catalogItemId": {
            "type": "string"
          },
          "isOwned": {
            "type": "boolean"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "customItemId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerGetAccountOwnsCatalogItemResponse": {
        "type": "object",
        "properties": {
          "isOwned": {
            "type": "boolean"
          },
          "count": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerGetSubscriptionsRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "accountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerGetSubscriptionsResponse": {
        "type": "object",
        "properties": {
          "subscriptionIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerIncrementAccountCountableCatalogItemResponse": {
        "type": "object",
        "properties": {
          "newCount": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerModifyProviderCatalogItemDataRequest": {
        "type": "object",
        "properties": {
          "provider": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.EntitlementProvider"
          },
          "catalogItemId": {
            "type": "string"
          },
          "operation": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.ModifyProviderCatalogItemDataOperation"
          },
          "steamApp": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamAppProviderCatalogItemData"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerModifyProviderCatalogItemDataResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerRemoveProviderCatalogItemDataResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.ServerSetAccountCountableCatalogItemResponse": {
        "type": "object",
        "properties": {
          "previousCount": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.SteamAppItemPolicy": {
        "enum": [
          "STEAM_APP_ITEM_POLICY_UNSPECIFIED",
          "STEAM_APP_ITEM_POLICY_ANY",
          "STEAM_APP_ITEM_POLICY_PERMANENT_ONLY",
          0,
          1,
          2
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Any",
          "2": "PermanentOnly"
        }
      },
      "Services.CatenaEntitlements.SteamAppProviderCatalogItemData": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "integer",
            "format": "int32"
          },
          "policy": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamAppItemPolicy"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.SteamOrderProviderOrderMetadata": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string"
          },
          "userSession": {
            "type": "string"
          },
          "ipAddress": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.SteamOrderProviderOrderResultDetails": {
        "type": "object",
        "properties": {
          "checkoutUrl": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.SteamOrderProviderSubscriptionMetadata": {
        "type": "object",
        "properties": {
          "orderMetadata": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderOrderMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.SteamOrderProviderSubscriptionResultDetails": {
        "type": "object",
        "properties": {
          "orderResultDetails": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SteamOrderProviderOrderResultDetails"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.Subscription": {
        "type": "object",
        "properties": {
          "order": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.Order"
          },
          "interval": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SubscriptionInterval"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.SubscriptionInterval": {
        "type": "object",
        "properties": {
          "unit": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.SubscriptionIntervalUnit"
          },
          "count": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.SubscriptionIntervalUnit": {
        "enum": [
          "SUBSCRIPTION_INTERVAL_UNIT_UNSPECIFIED",
          "SUBSCRIPTION_INTERVAL_UNIT_DAY",
          "SUBSCRIPTION_INTERVAL_UNIT_WEEK",
          "SUBSCRIPTION_INTERVAL_UNIT_MONTH",
          "SUBSCRIPTION_INTERVAL_UNIT_YEAR",
          0,
          1,
          2,
          3,
          4
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Day",
          "2": "Week",
          "3": "Month",
          "4": "Year"
        }
      },
      "Services.CatenaEntitlements.TagUpdate": {
        "type": "object",
        "properties": {
          "operation": {
            "$ref": "#/components/schemas/Services.CatenaEntitlements.TagUpdateOperation"
          },
          "tag": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaEntitlements.TagUpdateOperation": {
        "enum": [
          "TAG_UPDATE_ADD",
          "TAG_UPDATE_REMOVE",
          0,
          1
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "TagUpdateAdd",
          "1": "TagUpdateRemove"
        }
      },
      "Services.CatenaFriends.AcceptFriendRequestRequest": {
        "type": "object",
        "properties": {
          "senderAccountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AcceptFriendRequestResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminAddFriendRequest": {
        "type": "object",
        "properties": {
          "accountId1": {
            "type": "string"
          },
          "accountId2": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminAddFriendResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminCreatePendingFriendRequestRequest": {
        "type": "object",
        "properties": {
          "senderAccountId": {
            "type": "string"
          },
          "receiverAccountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminCreatePendingFriendRequestResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminGetFriendsListRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminGetFriendsListResponse": {
        "type": "object",
        "properties": {
          "friends": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaFriends.Friend"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminGetIncomingPendingRequestsRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminGetIncomingPendingRequestsResponse": {
        "type": "object",
        "properties": {
          "incoming": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaFriends.FriendRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminGetOutgoingPendingRequestsRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminGetOutgoingPendingRequestsResponse": {
        "type": "object",
        "properties": {
          "outgoing": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaFriends.FriendRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminRemoveFriendRequest": {
        "type": "object",
        "properties": {
          "accountId1": {
            "type": "string"
          },
          "accountId2": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminRemoveFriendResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminRemovePendingFriendRequestRequest": {
        "type": "object",
        "properties": {
          "senderAccountId": {
            "type": "string"
          },
          "receiverAccountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.AdminRemovePendingFriendRequestResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaFriends.DeclineFriendRequestRequest": {
        "type": "object",
        "properties": {
          "senderAccountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.DeclineFriendRequestResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaFriends.Friend": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "becameFriendsTimestamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.FriendRequest": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string"
          },
          "requestSentTimestamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false,
        "description": "Structures"
      },
      "Services.CatenaFriends.FriendsEvent": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Services.CatenaFriends.FriendsEventType"
          },
          "senderAccountId": {
            "type": "string"
          },
          "receiverAccountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.FriendsEventType": {
        "enum": [
          "UNSPECIFIED",
          "SEND_FRIEND_REQUEST",
          "ACCEPT_FRIEND_REQUEST",
          "REJECT_FRIEND_REQUEST",
          "REMOVE_FRIEND",
          0,
          1,
          2,
          3,
          4
        ],
        "description": "Update Events\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "SendFriendRequest",
          "2": "AcceptFriendRequest",
          "3": "RejectFriendRequest",
          "4": "RemoveFriend"
        }
      },
      "Services.CatenaFriends.GetFriendsListRequest": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.GetFriendsListResponse": {
        "type": "object",
        "properties": {
          "friends": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaFriends.Friend"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.GetIncomingPendingRequestsRequest": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.GetIncomingPendingRequestsResponse": {
        "type": "object",
        "properties": {
          "incomingFriends": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaFriends.FriendRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.GetOutgoingPendingRequestsRequest": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "format": "int32"
          },
          "offset": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.GetOutgoingPendingRequestsResponse": {
        "type": "object",
        "properties": {
          "outgoingFriends": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaFriends.FriendRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.RemoveFriendRequest": {
        "type": "object",
        "properties": {
          "removingAccountId": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaFriends.RemoveFriendResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaFriends.SendFriendRequestRequest": {
        "type": "object",
        "properties": {
          "receiverAccountId": {
            "type": "string"
          }
        },
        "additionalProperties": false,
        "description": "Requests"
      },
      "Services.CatenaFriends.SendFriendRequestResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.CreateMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "namespace": {
            "type": "string"
          },
          "entryKey": {
            "type": "string"
          },
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.CreateMetadataEntryResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.DeleteMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "namespace": {
            "type": "string"
          },
          "entryKey": {
            "type": "string"
          },
          "jsonHandlingType": {
            "$ref": "#/components/schemas/Catena.Groups.DeleteJsonMetadataType"
          },
          "propertiesToRemovePaths": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.DeleteMetadataEntryResponse": {
        "type": "object",
        "properties": {
          "entryDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.GetMetadataEntriesResponse": {
        "type": "object",
        "properties": {
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.GetMetadataEntryResponse": {
        "type": "object",
        "properties": {
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.ListNamespacesResponse": {
        "type": "object",
        "properties": {
          "namespaces": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.UpdateMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "namespace": {
            "type": "string"
          },
          "entryKey": {
            "type": "string"
          },
          "entryValue": {
            "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
          },
          "updateOperationType": {
            "$ref": "#/components/schemas/Catena.Groups.UpdateMetadataOperationType"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaGlobalMetadata.UpdateMetadataEntryResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaLeaderboards.LeaderboardResponse": {
        "type": "object",
        "properties": {
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaLeaderboards.PlayerScore"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaLeaderboards.PlayerScore": {
        "type": "object",
        "properties": {
          "playerName": {
            "type": "string"
          },
          "score": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AdminEndActiveMatchResponse": {
        "type": "object",
        "properties": {
          "matchDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AdminGetActiveMatchByIdResponse": {
        "type": "object",
        "properties": {
          "match": {
            "$ref": "#/components/schemas/Catena.MatchBroker.Match"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AdminGetAvailableAllocatorsResponse": {
        "type": "object",
        "properties": {
          "allocatorNames": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AdminGetConfiguredAllocatorsResponse": {
        "type": "object",
        "properties": {
          "allocators": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaMatchBroker.AllocatorConfiguration"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AdminListActiveMatchesResponse": {
        "type": "object",
        "properties": {
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.MatchBroker.Match"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AdminXGetMatchBrokerConfigResponse": {
        "type": "object",
        "properties": {
          "fastSchedule": {
            "type": "integer",
            "format": "int32"
          },
          "serverMaxLifetimeMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "matchPickupTimeSeconds": {
            "type": "integer",
            "format": "int32"
          },
          "matchReadyTimeSeconds": {
            "type": "integer",
            "format": "int32"
          },
          "matchMaxRunTimeMinutes": {
            "type": "integer",
            "format": "int32"
          },
          "scheduleFrequencySeconds": {
            "type": "integer",
            "format": "int32"
          },
          "delayAllocationSeconds": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AdminXReconfigureMatchBrokerResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.AllocatorConfiguration": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "requirements": {
            "type": "string"
          },
          "rawAllocatorConfiguration": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchBroker.ListQueuedMatchesResponse": {
        "type": "object",
        "properties": {
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.MatchBroker.Match"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.AdminXGetMatchmakerConfigResponse": {
        "type": "object",
        "properties": {
          "catenaMatchmakerConfig": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.CatenaMatchmakerConfig"
          },
          "flexMatchConfig": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.FlexMatchConfig"
          },
          "customMatchmakerConfig": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.AdminXReconfigureMatchmakerRequest": {
        "type": "object",
        "properties": {
          "config": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.AdminXReconfigureMatchmakerResponse": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.CancelMatchmakingRequest": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "string",
            "description": "The ID of the ticket for which we are cancelling matchmaking."
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.CancelMatchmakingResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.CatenaMatchmakerConfig": {
        "type": "object",
        "properties": {
          "matchmakingQueues": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Services.CatenaMatchmaking.QueueConfig"
            }
          },
          "statusExpirationMinutes": {
            "type": "integer",
            "format": "int64"
          },
          "customHooks": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.FlexMatchConfig": {
        "type": "object",
        "properties": {
          "sqsQueueUrl": {
            "type": "string"
          },
          "gameliftConfig": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.GameLiftConfig"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.GameLiftConfig": {
        "type": "object",
        "properties": {
          "profile": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "accessKey": {
            "type": "string"
          },
          "secretKey": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.GetMatchmakingStatusResponse": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.MatchmakingStatus"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.ListTicketsResponse": {
        "type": "object",
        "properties": {
          "tickets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaMatchmaking.MatchmakingTicketWithState"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.MatchmakingStatus": {
        "enum": [
          "MATCHMAKING_STATUS_UNSPECIFIED",
          "MATCHMAKING_STATUS_IN_PROGRESS",
          "MATCHMAKING_STATUS_COMPLETED",
          "MATCHMAKING_STATUS_CANCELLED",
          "MATCHMAKING_STATUS_FAILED",
          "MATCHMAKING_STATUS_FINDING_SERVER",
          "MATCHMAKING_STATUS_MATCHMAKING_TIMED_OUT",
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "InProgress",
          "2": "Completed",
          "3": "Cancelled",
          "4": "Failed",
          "5": "FindingServer",
          "6": "MatchmakingTimedOut"
        }
      },
      "Services.CatenaMatchmaking.MatchmakingStatusUpdateEvent": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.MatchmakingStatusUpdateType"
          },
          "message": {
            "type": "string"
          },
          "ticketId": {
            "type": "string"
          },
          "additionalEventData": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.MatchmakingStatusUpdateType": {
        "enum": [
          "MATCHMAKING_STATUS_UPDATE_TYPE_UNSPECIFIED",
          "MATCHMAKING_STATUS_UPDATE_TYPE_IN_PROGRESS",
          "MATCHMAKING_STATUS_UPDATE_TYPE_COMPLETED",
          "MATCHMAKING_STATUS_UPDATE_TYPE_FAILED",
          "MATCHMAKING_STATUS_UPDATE_TYPE_CANCELLED",
          "MATCHMAKING_STATUS_UPDATE_TYPE_FINDING_SERVER",
          "MATCHMAKING_STATUS_UPDATE_MATCHMAKING_TIMED_OUT",
          0,
          1,
          2,
          3,
          4,
          5,
          6
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "InProgress",
          "2": "Completed",
          "3": "Failed",
          "4": "Cancelled",
          "5": "FindingServer",
          "6": "MatchmakingStatusUpdateMatchmakingTimedOut"
        }
      },
      "Services.CatenaMatchmaking.MatchmakingTicketWithState": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "string"
          },
          "entity": {
            "$ref": "#/components/schemas/Catena.Groups.Entity"
          },
          "status": {
            "$ref": "#/components/schemas/Services.CatenaMatchmaking.MatchmakingStatus"
          },
          "matchmakerState": {
            "type": "string",
            "description": "Determined by the configured matchmaker"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.NewMatchEvent": {
        "type": "object",
        "properties": {
          "match": {
            "$ref": "#/components/schemas/Catena.MatchBroker.Match"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.QueueConfig": {
        "type": "object",
        "properties": {
          "queueName": {
            "type": "string"
          },
          "teams": {
            "type": "integer",
            "format": "int64"
          },
          "minPlayersPerTeam": {
            "type": "integer",
            "format": "int64"
          },
          "playersPerTeam": {
            "type": "integer",
            "format": "int64"
          },
          "ticketExpirationSeconds": {
            "type": "integer",
            "format": "int64"
          },
          "expirationAction": {
            "type": "string"
          },
          "customStrategy": {
            "type": "string"
          },
          "customHooks": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.StartMatchmakingRequest": {
        "type": "object",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/Catena.Groups.Entity"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaMatchmaking.StartMatchmakingResponse": {
        "type": "object",
        "properties": {
          "ticketId": {
            "type": "string",
            "description": "The ID of the newly created matchmaking ticket."
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminAddServiceToExcludeRequest": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminAddServiceToExcludeResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminAddServiceToIncludeRequest": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminAddServiceToIncludeResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminGetPreferredImplementationOverridesResponse": {
        "type": "object",
        "properties": {
          "overrides": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminGetServicesToExcludeResponse": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminGetServicesToIncludeResponse": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminRemoveServiceToExcludeRequest": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminRemoveServiceToExcludeResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminRemoveServiceToIncludeRequest": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminRemoveServiceToIncludeResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminRestartNodeResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminSetPreferredImplementationOverrideRequest": {
        "type": "object",
        "properties": {
          "interface": {
            "type": "string"
          },
          "implementation": {
            "type": "string"
          },
          "clear": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeControl.AdminSetPreferredImplementationOverrideResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.AdminGetSelfLogSnapshotResponse": {
        "type": "object",
        "properties": {
          "logEvents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaNodeInspection.LogEvent"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.AdminStreamSelfLogResponse": {
        "type": "object",
        "properties": {
          "logEvent": {
            "$ref": "#/components/schemas/Services.CatenaNodeInspection.LogEvent"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.AdminXGetScheduledTasksResponse": {
        "type": "object",
        "properties": {
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaNodeInspection.ScheduledTask"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.AvailableImplementations": {
        "type": "object",
        "properties": {
          "implementations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.GetActiveImplementationsResponse": {
        "type": "object",
        "properties": {
          "activeImplementations": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.GetAvailableImplementationsResponse": {
        "type": "object",
        "properties": {
          "availableImplementations": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Services.CatenaNodeInspection.AvailableImplementations"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.GetNodeHealthResponse": {
        "type": "object",
        "properties": {
          "healthy": {
            "type": "boolean"
          },
          "services": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaNodeInspection.ServiceHealth"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.ListDiscoveredServicesResponse": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.ListEnabledServicesResponse": {
        "type": "object",
        "properties": {
          "services": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.LogEvent": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.NodeIsHealthyResponse": {
        "type": "object",
        "properties": {
          "isHealthy": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.ScheduledTask": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "mostRecentTrigger": {
            "$ref": "#/components/schemas/Services.CatenaNodeInspection.ScheduledTaskTrigger"
          },
          "nextTrigger": {
            "$ref": "#/components/schemas/Services.CatenaNodeInspection.ScheduledTaskTrigger"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.ScheduledTaskTrigger": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string"
          },
          "timestamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.ServiceHealth": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          },
          "healthy": {
            "$ref": "#/components/schemas/Services.CatenaNodeInspection.ServiceHealthStatus"
          },
          "components": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Catena.Core.ComponentHealth"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaNodeInspection.ServiceHealthStatus": {
        "enum": [
          "SERVICE_HEALTH_STATUS_UNSPECIFIED",
          "SERVICE_HEALTH_STATUS_HEALTHY",
          "SERVICE_HEALTH_STATUS_UNHEALTHY",
          "SERVICE_HEALTH_STATUS_PRESUMED_HEALTHY",
          0,
          1,
          2,
          3
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Healthy",
          "2": "Unhealthy",
          "3": "PresumedHealthy"
        }
      },
      "Services.CatenaParties.AdminCreatePartyRequest": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminCreatePartyResponse": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminDeleteAllPartiesResponse": {
        "type": "object",
        "properties": {
          "partiesDeleted": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminDeletePartyResponse": {
        "type": "object",
        "properties": {
          "partyDeleted": {
            "type": "boolean",
            "description": "returns true if party was deleted from database, false otherwise"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminGetPartyByIdResponse": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminListPartiesResponse": {
        "type": "object",
        "properties": {
          "parties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaParties.Party"
            },
            "description": "list of all the existing parties"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminUpdateParty": {
        "type": "object",
        "properties": {
          "leaderId": {
            "type": "string"
          },
          "kick": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "join": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "joinDisplayNames": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminUpdatePartyRequest": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string",
            "description": "id of party to be updated"
          },
          "payload": {
            "$ref": "#/components/schemas/Services.CatenaParties.AdminUpdateParty"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.AdminUpdatePartyResponse": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.CreatePartyMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "innerRequest": {
            "$ref": "#/components/schemas/Catena.Groups.CreateMetadataEntryRequest"
          },
          "playerId": {
            "type": "string",
            "description": "Optional: If included, query for a specific party member"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.CreatePartyRequest": {
        "type": "object",
        "properties": {
          "creatingPlayerMetadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.CreatePartyResponse": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.GetPartyInfoResponse": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.GetPlayerInfoByIdResponse": {
        "type": "object",
        "properties": {
          "player": {
            "$ref": "#/components/schemas/Services.CatenaParties.Player"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.JoinPartyWithInviteCodeRequest": {
        "type": "object",
        "properties": {
          "inviteCode": {
            "type": "string",
            "description": "code used to join the party"
          },
          "joiningPlayerMetadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.JoinPartyWithInviteCodeResponse": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.KickFromPartyRequest": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string",
            "description": "ID of player to kick from party"
          },
          "partyId": {
            "type": "string",
            "description": "ID of party to kick player from"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.KickFromPartyResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaParties.LeavePartyRequest": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string",
            "description": "ID of party to leave"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.LeavePartyResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaParties.Party": {
        "type": "object",
        "properties": {
          "partyId": {
            "type": "string"
          },
          "leaderId": {
            "type": "string"
          },
          "inviteCode": {
            "type": "string"
          },
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaParties.Player"
            }
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.PartyEventValue": {
        "type": "object",
        "properties": {
          "boolValue": {
            "type": "boolean"
          },
          "metadataValue": {
            "$ref": "#/components/schemas/Catena.Groups.MetadataEntry"
          },
          "stringValue": {
            "type": "string"
          },
          "playerValue": {
            "$ref": "#/components/schemas/Services.CatenaParties.Player"
          },
          "intValue": {
            "type": "integer",
            "format": "int32"
          },
          "metadataMapValue": {
            "$ref": "#/components/schemas/Catena.Groups.MetadataMap"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.PartyUpdateEvent": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/Services.CatenaParties.PartyUpdateType"
          },
          "message": {
            "type": "string"
          },
          "partyId": {
            "type": "string",
            "description": "The party id this event is associated with"
          },
          "eventPayload": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Services.CatenaParties.PartyEventValue"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.PartyUpdateType": {
        "enum": [
          "PARTY_UPDATE_TYPE_UNSPECIFIED",
          "PARTY_UPDATE_TYPE_PLAYER_JOINED",
          "PARTY_UPDATE_TYPE_PLAYER_LEFT",
          "PARTY_UPDATE_TYPE_PLAYER_KICKED",
          "PARTY_UPDATE_TYPE_PLAYER_READY_CHANGED",
          "PARTY_UPDATE_TYPE_PLAYER_LEADER_CHANGED",
          "PARTY_UPDATE_TYPE_METADATA_CREATED",
          "PARTY_UPDATE_TYPE_METADATA_UPDATED",
          "PARTY_UPDATE_TYPE_METADATA_DELETED",
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "PlayerJoined",
          "2": "PlayerLeft",
          "3": "PlayerKicked",
          "4": "PlayerReadyChanged",
          "5": "PlayerLeaderChanged",
          "6": "MetadataCreated",
          "7": "MetadataUpdated",
          "8": "MetadataDeleted"
        }
      },
      "Services.CatenaParties.Player": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "isReady": {
            "type": "boolean"
          },
          "isLeader": {
            "type": "boolean"
          },
          "teamNumber": {
            "type": "integer",
            "format": "int32"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Catena.Groups.EntityMetadata"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.SetPartyLeaderRequest": {
        "type": "object",
        "properties": {
          "playerId": {
            "type": "string",
            "description": "ID of player to set as party leader"
          },
          "partyId": {
            "type": "string",
            "description": "ID of party to set leader of"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.SetPartyLeaderResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaParties.UpdatePartyMetadataEntryRequest": {
        "type": "object",
        "properties": {
          "innerRequest": {
            "$ref": "#/components/schemas/Catena.Groups.UpdateMetadataEntryRequest"
          },
          "playerId": {
            "type": "string",
            "description": "Optional: If included, query for a specific party member"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.UpdatePartyPlayerRequest": {
        "type": "object",
        "properties": {
          "payload": {
            "$ref": "#/components/schemas/Services.CatenaParties.Player"
          },
          "payloadMask": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaParties.UpdatePartyPlayerResponse": {
        "type": "object",
        "properties": {
          "party": {
            "$ref": "#/components/schemas/Services.CatenaParties.Party"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminDeleteEmailUserRequest": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminDeleteEmailUserResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminDeleteLoginInfoResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminDeviceExistsForAuthResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminGetLoginInfoResponse": {
        "type": "object",
        "properties": {
          "sessionData": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminListDevicesForAuthResponse": {
        "type": "object",
        "properties": {
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminListEmailUsersResponse": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaPlatformAuth.EmailUser"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminRegisterDeviceForAuthResponse": {
        "type": "object",
        "properties": {
          "certificate": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminRemoveDeviceForAuthResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminSearchDevicesForAuthRequest": {
        "type": "object",
        "properties": {
          "deviceFilter": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminSearchDevicesForAuthResponse": {
        "type": "object",
        "properties": {
          "deviceIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminSearchEmailUsersRequest": {
        "type": "object",
        "properties": {
          "emailAddressFilter": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.AdminSearchEmailUsersResponse": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaPlatformAuth.EmailUser"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.EmailUser": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string"
          },
          "verified": {
            "type": "boolean"
          },
          "lastVerified": {
            "type": "integer",
            "format": "int64"
          },
          "createdOn": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.IsAuthFeatureEnabledResponse": {
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.PlatformAuthFeature": {
        "enum": [
          0,
          1
        ],
        "description": "\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "format": "int32",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "SignUp"
        }
      },
      "Services.CatenaPlatformAuth.RememberLoginInfoResponse": {
        "type": "object",
        "properties": {
          "replayToken": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.ResendVerificationRequest": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.ResendVerificationResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.SignUpRequest": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string"
          },
          "password": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.SignUpResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.VerifyEmailAddressRequest": {
        "type": "object",
        "properties": {
          "emailAddress": {
            "type": "string"
          },
          "verificationCode": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaPlatformAuth.VerifyEmailAddressResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminCreateServerPatchRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game server release id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "description": "subject to change: possibly protobuf.bytes type  / cant use long, have to use int64 in .proto files",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminCreateServerPatchResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "patch id"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminCreateServerReleaseRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game server release id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "description": "subject to change: possibly protobuf.bytes type  / cant use long, have to use int64 in .proto files",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminCreateServerReleaseResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game server release id"
          },
          "name": {
            "type": "string",
            "description": "name of server"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminDeleteServerPatchResponse": {
        "type": "object",
        "properties": {
          "serverDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminDeleteServerReleaseResponse": {
        "type": "object",
        "properties": {
          "serverReleaseDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminUpdateServerPatchRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game patch id"
          },
          "gameServerReleaseId": {
            "type": "string",
            "description": "game server release id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminUpdateServerPatchResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game patch id"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminUpdateServerReleaseRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game server release id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.AdminUpdateServerReleaseResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game server release id"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.GetServerManifestResponse": {
        "type": "object",
        "properties": {
          "releases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaServerReleases.ServerRelease"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.ServerPatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaServerReleases.ServerRelease": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "patches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaServerReleases.ServerPatch"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSessions.AdminListSessionsResponse": {
        "type": "object",
        "properties": {
          "sessions": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/Services.CatenaSessions.Session"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSessions.Session": {
        "type": "object",
        "properties": {
          "sessionData": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminAccountCheckAppOwnershipResponse": {
        "type": "object",
        "properties": {
          "ownsApp": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectInventoryGetItemDefsResponse": {
        "type": "object",
        "properties": {
          "itemdefJson": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionCancelAgreementRequest": {
        "type": "object",
        "properties": {
          "steamId": {
            "type": "integer",
            "format": "int64"
          },
          "appId": {
            "type": "integer",
            "format": "int32"
          },
          "agreementId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionCancelAgreementResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetReportRequest": {
        "type": "object",
        "properties": {
          "maxResults": {
            "type": "integer",
            "format": "int32"
          },
          "timestamp": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetReportResponse": {
        "type": "object",
        "properties": {
          "orders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetReportResponseOrder"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetReportResponseOrder": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "integer",
            "description": "Not all information is reported back here",
            "format": "int64"
          },
          "transId": {
            "type": "integer",
            "format": "int64"
          },
          "steamId": {
            "type": "integer",
            "format": "int64"
          },
          "status": {
            "type": "string"
          },
          "time": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetUserAgreementInfoAgreement": {
        "type": "object",
        "properties": {
          "agreementId": {
            "type": "integer",
            "description": "Not all information is reported back here",
            "format": "int64"
          },
          "status": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetUserAgreementInfoRequest": {
        "type": "object",
        "properties": {
          "steamId": {
            "type": "integer",
            "format": "int64"
          },
          "appId": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetUserAgreementInfoResponse": {
        "type": "object",
        "properties": {
          "agreements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaSteamDiag.AdminDirectTransactionGetUserAgreementInfoAgreement"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetUserInfoRequest": {
        "type": "object",
        "properties": {
          "steamId": {
            "type": "integer",
            "format": "int64"
          },
          "appId": {
            "type": "integer",
            "format": "int32"
          },
          "ipAddress": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionGetUserInfoResponse": {
        "type": "object",
        "properties": {
          "state": {
            "type": "string"
          },
          "country": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionQueryTxnRequest": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "integer",
            "format": "int64"
          },
          "transId": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectTransactionQueryTxnResponse": {
        "type": "object",
        "properties": {
          "orderId": {
            "type": "integer",
            "description": "Not all information is reported back here",
            "format": "int64"
          },
          "transId": {
            "type": "integer",
            "format": "int64"
          },
          "steamId": {
            "type": "integer",
            "format": "int64"
          },
          "status": {
            "type": "string"
          },
          "time": {
            "type": "string"
          },
          "agreementId": {
            "type": "integer",
            "format": "int64"
          },
          "agreementStatus": {
            "type": "string"
          },
          "timeCreated": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectUserCheckAppOwnershipResponse": {
        "type": "object",
        "properties": {
          "ownsApp": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectUserGetPlayerSummariesRequest": {
        "type": "object",
        "properties": {
          "steamId": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminDirectUserGetPlayerSummariesResponse": {
        "type": "object",
        "properties": {
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaSteamDiag.PlayerSummary"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminUserGetPlayerSummariesRequest": {
        "type": "object",
        "properties": {
          "accountIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AdminUserGetPlayerSummariesResponse": {
        "type": "object",
        "properties": {
          "players": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaSteamDiag.AugmentedPlayerSummary"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.AugmentedPlayerSummary": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "Augment with account ID from request for correlation"
          },
          "steamId": {
            "type": "integer",
            "description": "Not all information is reported back here, steam ID is 0 when account can't be mapped",
            "format": "int64"
          },
          "personaName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaSteamDiag.PlayerSummary": {
        "type": "object",
        "properties": {
          "steamId": {
            "type": "integer",
            "description": "Not all information is reported back here",
            "format": "int64"
          },
          "personaName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminCreateTitlePatchRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game title release id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "description": "subject to change: possibly protobuf.bytes type  / cant use long, have to use int64 in .proto files",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminCreateTitlePatchResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "patch id"
          },
          "name": {
            "type": "string",
            "description": "name of title"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminCreateTitleReleaseRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game title id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "description": "subject to change: possibly protobuf.bytes type  / cant use long, have to use int64 in .proto files",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "platform": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminCreateTitleReleaseResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "release id"
          },
          "name": {
            "type": "string",
            "description": "name of title"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminCreateTitleRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminCreateTitleResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminDeleteTitlePatchRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "patch id"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminDeleteTitlePatchResponse": {
        "type": "object",
        "properties": {
          "titleDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminDeleteTitleReleaseRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "release id"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminDeleteTitleReleaseResponse": {
        "type": "object",
        "properties": {
          "titleDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminDeleteTitleRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminDeleteTitleResponse": {
        "type": "object",
        "properties": {
          "titleDeleted": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminUpdateTitlePatchRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game patch id"
          },
          "gameTitleReleaseId": {
            "type": "string",
            "description": "game title release id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminUpdateTitlePatchResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game patch id"
          },
          "name": {
            "type": "string",
            "description": "game title name"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminUpdateTitleReleaseRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game title release id"
          },
          "gameTitleId": {
            "type": "string",
            "description": "game title id"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "platform": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminUpdateTitleReleaseResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "game title release id"
          },
          "name": {
            "type": "string",
            "description": "game title name"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminUpdateTitleRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.AdminUpdateTitleResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.GameTitle": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.GeneratePresignedUrlFromUriRequest": {
        "type": "object",
        "properties": {
          "uri": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.GeneratePresignedUrlFromUriResponse": {
        "type": "object",
        "properties": {
          "presignedHeadUrl": {
            "type": "string"
          },
          "presignedGetUrl": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.GeneratePresignedUrlRequest": {
        "type": "object",
        "properties": {
          "objectKey": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.GeneratePresignedUrlResponse": {
        "type": "object",
        "properties": {
          "presignedHeadUrl": {
            "type": "string"
          },
          "presignedGetUrl": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.GetTitleManifestResponse": {
        "type": "object",
        "properties": {
          "titleName": {
            "type": "string"
          },
          "releases": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaTitles.TitleRelease"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.GetTitlesResponse": {
        "type": "object",
        "properties": {
          "titles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaTitles.GameTitle"
            }
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.TitlePatch": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          }
        },
        "additionalProperties": false
      },
      "Services.CatenaTitles.TitleRelease": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "uri": {
            "type": "string"
          },
          "bytes": {
            "type": "integer",
            "format": "int64"
          },
          "checksum": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "checksumAlg": {
            "type": "string",
            "description": "StringValue allows for a field to be nullable"
          },
          "patches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Services.CatenaTitles.TitlePatch"
            }
          },
          "platform": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Services.PublicCommon.NullValue": {
        "enum": [
          "NULL_VALUE",
          0
        ],
        "description": "Specific use case \"nullable\" types\r\nSimilar to well-known types but simplified (and fewer dependencies and less overhead and no Value/Struct!)\r\nCatena supports implicitly casting to/from from C# native nullable types\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "NullValue"
        }
      },
      "Services.PublicCommon.NullableBool": {
        "type": "object",
        "properties": {
          "nullValue": {
            "$ref": "#/components/schemas/Services.PublicCommon.NullValue"
          },
          "value": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "Services.PublicCommon.Platform": {
        "enum": [
          "PLATFORM_UNSPECIFIED",
          "PLATFORM_UNSAFE",
          "PLATFORM_DISCORD",
          "PLATFORM_GOOGLE",
          "PLATFORM_APPLE",
          "PLATFORM_TWITCH",
          "PLATFORM_STEAM",
          "PLATFORM_ITCH",
          "PLATFORM_AMAZON",
          "PLATFORM_EPIC",
          "PLATFORM_OFFICE365",
          "PLATFORM_PATREON",
          "PLATFORM_BATTLENET",
          "PLATFORM_CATENA",
          "PLATFORM_CUSTOM",
          0,
          1,
          2,
          3,
          4,
          5,
          6,
          7,
          8,
          9,
          10,
          11,
          12,
          98,
          99
        ],
        "description": "All Catena supported platforms.\r\nPrefer integer values in JSON-encoded requests to avoid generic parse errors due to typos.",
        "x-enumDescriptions": {
          "0": "Unspecified",
          "1": "Unsafe",
          "2": "Discord",
          "3": "Google",
          "4": "Apple",
          "5": "Twitch",
          "6": "Steam",
          "7": "Itch",
          "8": "Amazon",
          "9": "Epic",
          "10": "Office365",
          "11": "Patreon",
          "12": "Battlenet",
          "98": "Catena",
          "99": "Custom"
        }
      }
    }
  },
  "tags": [
    {
      "name": "CatenaServerCatalog",
      "description": "The CatenaServerCatalogService is responsible for collecting all known hosts via HostHeartBeats. These Heartbeats result in the service registering the host\r\nand tracking it for future queries/external use."
    },
    {
      "name": "CatenaApiKeys",
      "description": "CatenaApiKeys"
    },
    {
      "name": "CatenaAccounts",
      "description": "CatenaAccounts"
    },
    {
      "name": "CatenaServerManager",
      "description": "The server manager service portion of the integrated broker. This is what game servers interact with to handle matches."
    },
    {
      "name": "CatenaAuthentication",
      "description": "CatenaAuthentication"
    },
    {
      "name": "CatenaSessions",
      "description": "A service that can be used to probe the session store directly for development or diagnostics.\r\nNot intended for regular production use!"
    },
    {
      "name": "CatenaTitles",
      "description": "CatenaTitles"
    },
    {
      "name": "CatenaServerReleases",
      "description": "CatenaServerManagement"
    },
    {
      "name": "CatenaPlatformAuth",
      "description": "A service for managing Catena-authoritative functionality with regards to validation and authentication.\r\nUsed by validators in the Authentication service that log the user into the Catena platform."
    },
    {
      "name": "CatenaParties",
      "description": "CatenaParties"
    },
    {
      "name": "CatenaNodeInspection",
      "description": "A service that can be used inspect the Catena node."
    },
    {
      "name": "CatenaNodeControl",
      "description": "A service that can be used control the Catena node."
    },
    {
      "name": "CatenaMatchBroker",
      "description": "An integrated match broker service which sits between the matchmaker, clients, and game servers/hosting to coordinate capacity and notify clients when servers are ready to accept connections.\r\nThis implementation integrates the broker and capacity/server manager roles."
    },
    {
      "name": "CatenaFriends",
      "description": "CatenaFriends"
    },
    {
      "name": "Events",
      "description": "Events"
    }
  ]
}