{
  "x-generator": "NSwag v14.6.2.0 (NJsonSchema v11.5.2.0 (Newtonsoft.Json v13.0.0.0))",
  "openapi": "3.0.0",
  "info": {
    "title": "Umbraco Headless Management API",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://management.umbracocompose.com"
    }
  ],
  "paths": {
    "/v1/projects/{projectAlias}/api-applications": {
      "post": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Create an API application",
        "description": "Creates an API application that can be used by other software to call Management API endpoints.",
        "operationId": "CreateApiApplicationEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          }
        ],
        "requestBody": {
          "x-name": "CreateApiApplicationRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateApiApplicationRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiApplicationDto"
                },
                "example": {
                  "scopes": {
                    "project": [
                      "project"
                    ],
                    "environments": {
                      "development": [
                        "typeschema"
                      ]
                    }
                  },
                  "clientSecret": "Ry0QQzgyZuorMqW6vv0A_F3mz+xip.ppu5pd3my~flOk2QceOk1ZfYC481mOjHUY71RJRPbYvos7tHyH5U-RoB3qGbkY6571Fc+1",
                  "apiApplicationAlias": "my-api-application",
                  "description": "My API Application",
                  "clientId": "p136gnR71fr15gK24c1ad4EWxhAmHn0B01Mtygjqys6L8SkQoz"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Get all API applications",
        "description": "Retrieves details of all API applications for a project.",
        "operationId": "GetProjectApiApplicationsEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetProjectApiApplicationsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/api-applications/{apiApplicationAlias}": {
      "delete": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Delete an API application",
        "description": "Deletes an API application.",
        "operationId": "DeleteApiApplicationEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "apiApplicationAlias",
            "in": "path",
            "required": true,
            "description": "The alias of the API application to delete.",
            "schema": {
              "type": "string"
            },
            "example": "my-api-application"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Get an API application by alias",
        "description": "Retrieves details of an API applications with a given alias.",
        "operationId": "GetApiApplicationByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "apiApplicationAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the API application to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiApplicationDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/api-applications/{apiApplicationAlias}/commands/regenerate-client-secret": {
      "post": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Regenerate a client secret",
        "description": "Regenerates and returns the new client secret for a given API application.",
        "operationId": "RegenerateApiApplicationClientSecretEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "apiApplicationAlias",
            "in": "path",
            "required": true,
            "description": "The alias of the API application.",
            "schema": {
              "type": "string"
            },
            "example": "my-api-application"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiApplicationDto"
                },
                "example": {
                  "scopes": {
                    "project": [
                      "project"
                    ],
                    "environments": {}
                  },
                  "clientSecret": "L3xzzHsoRAri8FM~ab3uOJ5X0zeObh9VNa+7XPj2VBq84F-Mf-dewr5D92QfWM50Kgl5KPbqseC1Yon7UDeASdJjTMm+zwxu2uT/",
                  "apiApplicationAlias": "my-api-application",
                  "description": "My API Application",
                  "clientId": "client-id"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/api-applications/{apiApplicationAlias}/commands/rename": {
      "post": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Rename an API Application",
        "description": "Renames an API Application.",
        "operationId": "RenameApiApplicationEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "apiApplicationAlias",
            "in": "path",
            "required": true,
            "description": "Current alias of the API application to rename.",
            "schema": {
              "type": "string"
            },
            "example": "my-api-application"
          }
        ],
        "requestBody": {
          "x-name": "RenameApiApplicationRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameApiApplicationRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiApplicationDto"
                },
                "example": {
                  "scopes": {
                    "project": [
                      "project"
                    ],
                    "environments": {}
                  },
                  "clientSecret": null,
                  "apiApplicationAlias": "my-api-application",
                  "description": "My API Application",
                  "clientId": "client-id"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/api-applications/{apiApplicationAlias}/commands/update-description": {
      "put": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Update the description of an API Application",
        "description": "Updates the description of an API Application.",
        "operationId": "UpdateApiApplicationDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "apiApplicationAlias",
            "in": "path",
            "required": true,
            "description": "The alias of the API application to update.",
            "schema": {
              "type": "string"
            },
            "example": "my-api-application"
          }
        ],
        "requestBody": {
          "x-name": "UpdateApiApplicationDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiApplicationDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiApplicationDto"
                },
                "example": {
                  "scopes": {
                    "project": [
                      "project"
                    ],
                    "environments": {}
                  },
                  "clientSecret": null,
                  "apiApplicationAlias": "my-api-application",
                  "description": "My API Application",
                  "clientId": "client-id"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/api-applications/{apiApplicationAlias}/commands/update-scopes": {
      "put": {
        "tags": [
          "ApiApplications"
        ],
        "summary": "Update the scopes of an API Application",
        "description": "Updates the scopes of an API Application.",
        "operationId": "UpdateApiApplicationScopesEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "apiApplicationAlias",
            "in": "path",
            "required": true,
            "description": "The alias of the API application to update.",
            "schema": {
              "type": "string"
            },
            "example": "my-api-application"
          }
        ],
        "requestBody": {
          "x-name": "UpdateApiApplicationScopesRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApiApplicationScopesRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiApplicationDto"
                },
                "example": {
                  "scopes": {
                    "project": [
                      "project:write"
                    ],
                    "environments": {
                      "development": [
                        "typeschema"
                      ]
                    }
                  },
                  "clientSecret": null,
                  "apiApplicationAlias": "my-api-application",
                  "description": "My API Application",
                  "clientId": "client-id"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/collections": {
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "Create a collection",
        "description": "Creates a collection that can be used to store and group content.",
        "operationId": "CreateCollectionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to create a collection.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          }
        ],
        "requestBody": {
          "x-name": "CreateCollectionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCollectionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get collections for an environment",
        "description": "Retrieves details for all collections that belong to a given environment.",
        "operationId": "GetEnvironmentCollectionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment for which to retrieve collections.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEnvironmentCollectionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/collections/{collectionAlias}": {
      "delete": {
        "tags": [
          "Collections"
        ],
        "summary": "Delete a collection",
        "description": "Deletes a collection and all content in it. This is an extremely destructive operation that cannot be undone.",
        "operationId": "DeleteCollectionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to delete a collection.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "collectionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the collection to delete.",
            "schema": {
              "type": "string"
            },
            "example": "content"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "Collections"
        ],
        "summary": "Get a collection by alias",
        "description": "Retrieves details for a collection with a given alias.",
        "operationId": "GetCollectionByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve the collection.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "collectionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the collection to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/collections/{collectionAlias}/commands/rename": {
      "post": {
        "tags": [
          "Collections"
        ],
        "summary": "Rename a collection",
        "description": "Changes the alias of a given collection, immediately making it unavailble for retrieving content using the former name.",
        "operationId": "RenameCollectionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to rename the collection.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "collectionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the collection to rename.",
            "schema": {
              "type": "string"
            },
            "example": "content"
          }
        ],
        "requestBody": {
          "x-name": "RenameCollectionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameCollectionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionDto"
                },
                "example": {
                  "collectionAlias": "media",
                  "description": "Collection description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/collections/{collectionAlias}/commands/update-description": {
      "put": {
        "tags": [
          "Collections"
        ],
        "summary": "Update description of a collection",
        "description": "Changes the description of a collection.",
        "operationId": "UpdateCollectionDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the collection.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "collectionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the collection to update.",
            "schema": {
              "type": "string"
            },
            "example": "content"
          }
        ],
        "requestBody": {
          "x-name": "UpdateCollectionDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCollectionDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionDto"
                },
                "example": {
                  "collectionAlias": "content",
                  "description": "New Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments": {
      "post": {
        "tags": [
          "Environments"
        ],
        "summary": "Create an environment",
        "description": "Creates a environment for a given project. Environments are used to separate development, testing, and live content and applications.",
        "operationId": "CreateEnvironmentEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          }
        ],
        "requestBody": {
          "x-name": "CreateEnvironmentRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEnvironmentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnvironmentDto"
                },
                "example": {
                  "environmentAlias": "development",
                  "description": "Environment description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "Environments"
        ],
        "summary": "Get environments for a project",
        "description": "Retrieves details for all environments that belong to a given project.",
        "operationId": "GetProjectEnvironmentsEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetProjectEnvironmentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}": {
      "delete": {
        "tags": [
          "Environments"
        ],
        "summary": "Delete an environment",
        "description": "Deletes an environment and everything in it. This is an extremely destructive operation that cannot be undone.",
        "operationId": "DeleteEnvironmentEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment to delete.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "Environments"
        ],
        "summary": "Get an environment by alias",
        "description": "Retrieves details for an environment with a given alias.",
        "operationId": "GetEnvironmentByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnvironmentDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/commands/rename": {
      "post": {
        "tags": [
          "Environments"
        ],
        "summary": "Rename an environment",
        "description": "Changes the alias of a given environment.",
        "operationId": "RenameEnvironmentEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment to rename.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          }
        ],
        "requestBody": {
          "x-name": "RenameEnvironmentRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameEnvironmentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnvironmentDto"
                },
                "example": {
                  "environmentAlias": "dev",
                  "description": "Environment description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/commands/update-description": {
      "put": {
        "tags": [
          "Environments"
        ],
        "summary": "Update description of an environment",
        "description": "Changes the description of an environment.",
        "operationId": "UpdateEnvironmentDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment to update.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          }
        ],
        "requestBody": {
          "x-name": "UpdateEnvironmentDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEnvironmentDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EnvironmentDto"
                },
                "example": {
                  "environmentAlias": "development",
                  "description": "New Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/functions/ingestion": {
      "post": {
        "tags": [
          "IngestionFunctions"
        ],
        "summary": "Create an ingestion function",
        "description": "Creates a function to map custom ingestion payloads to a format that can be interpreted by Umbraco Compose.",
        "operationId": "CreateIngestionFunctionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "The environment on which to create the ingestion function.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          }
        ],
        "requestBody": {
          "x-name": "CreateIngestionFunctionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateIngestionFunctionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestionFunctionDto"
                },
                "example": {
                  "script": "export default function(data) {\n  const { id, variant, contentTypeAlias, ...entry } = data\n  return [{ action: 'add', id: id, variant: variant, type: contentTypeAlias, data: entry }]\n}",
                  "ingestionFunctionAlias": "umbraco-content",
                  "description": "Maps Umbraco Content"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "IngestionFunctions"
        ],
        "summary": "Get all ingestion functions",
        "description": "Retrieves all the ingestion functions for an environment.",
        "operationId": "GetEnvironmentIngestionFunctionsEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve ingestion functions.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            }
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEnvironmentIngestionFunctionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/functions/ingestion/{ingestionFunctionAlias}": {
      "delete": {
        "tags": [
          "IngestionFunctions"
        ],
        "summary": "Delete an ingestion function",
        "description": "Deletes an ingestion function, making it immediately unavailable for ingesting content.",
        "operationId": "DeleteIngestionFunctionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to delete the function.",
            "schema": {
              "type": "string"
            },
            "example": "umbraco-content"
          },
          {
            "name": "ingestionFunctionAlias",
            "in": "path",
            "required": true,
            "description": "Unique alias of the function to delete.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "IngestionFunctions"
        ],
        "summary": "Get an ingestion function by alias",
        "description": "Retrieves details for an ingestion function with a given alias.",
        "operationId": "GetIngestionFunctionByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve the function.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ingestionFunctionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the function to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestionFunctionDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/functions/ingestion/{ingestionFunctionAlias}/commands/rename": {
      "post": {
        "tags": [
          "IngestionFunctions"
        ],
        "summary": "Rename an ingestion function",
        "description": "Changes the alias of a given ingestion function, making it immediately unavailable for ingesting content with the former name.",
        "operationId": "RenameIngestionFunctionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to rename the function.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "ingestionFunctionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the function to rename.",
            "schema": {
              "type": "string"
            },
            "example": "umbraco-content"
          }
        ],
        "requestBody": {
          "x-name": "RenameIngestionFunctionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameIngestionFunctionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestionFunctionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/functions/ingestion/{ingestionFunctionAlias}/commands/update-description": {
      "put": {
        "tags": [
          "IngestionFunctions"
        ],
        "summary": "Update description for an ingestion function",
        "description": "Changes the description of a given ingestion function.",
        "operationId": "UpdateIngestionFunctionDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the function.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "ingestionFunctionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the function to update.",
            "schema": {
              "type": "string"
            },
            "example": "umbraco-content"
          }
        ],
        "requestBody": {
          "x-name": "UpdateIngestionFunctionDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateIngestionFunctionDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestionFunctionDto"
                },
                "example": {
                  "script": "export default function(data) {\n  const { id, variant, contentTypeAlias, ...entry } = data\n  return [{ action: 'add', id: id, variant: variant, type: contentTypeAlias, data: entry }]\n}",
                  "ingestionFunctionAlias": "umbraco-content",
                  "description": "Transforms Umbraco Content"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/functions/ingestion/{ingestionFunctionAlias}/commands/update-script": {
      "put": {
        "tags": [
          "IngestionFunctions"
        ],
        "summary": "Update script for an ingestion function",
        "description": "Changes the script body of a given ingestion function.",
        "operationId": "UpdateIngestionFunctionScriptEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the function.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "ingestionFunctionAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the function to update.",
            "schema": {
              "type": "string"
            },
            "example": "umbraco-content"
          }
        ],
        "requestBody": {
          "x-name": "UpdateIngestionFunctionScriptRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateIngestionFunctionScriptRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IngestionFunctionDto"
                },
                "example": {
                  "script": "export default (data) =>\n  data.map(item => {\n    const { id, variant, contentTypeAlias, ...entry } = item\n    return { action: 'add', id: id, variant: variant, type: contentTypeAlias, data: entry }\n  })",
                  "ingestionFunctionAlias": "umbraco-content",
                  "description": "Transforms Umbraco Content"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/graphql/persisted-documents": {
      "post": {
        "tags": [
          "GraphQLPersistedDocuments"
        ],
        "summary": "Create a persisted document",
        "description": "Creates a persisted document that can later be used to retrieve results from the GraphQL API by specifying only the document alias.",
        "operationId": "CreatePersistedDocumentEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to create the persisted document.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          }
        ],
        "requestBody": {
          "x-name": "CreatePersistedDocumentRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePersistedDocumentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersistedDocumentDto"
                },
                "example": {
                  "document": "query Software {\n  content {\n    items {\n      ... on Software {\n      name\n      }\n    }\n  }\n}",
                  "persistedDocumentAlias": "my-software-names",
                  "description": "Gets the names of software items"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "GraphQLPersistedDocuments"
        ],
        "summary": "Get all persisted documents",
        "description": "Retrieves all the persisted documents for an environment.",
        "operationId": "GetAllPersistedDocumentsEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve all persisted documents.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            },
            "example": 25
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "example": null
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            },
            "example": false
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllPersistedDocumentsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/graphql/persisted-documents/{persistedDocumentAlias}": {
      "delete": {
        "tags": [
          "GraphQLPersistedDocuments"
        ],
        "summary": "Delete a persisted document",
        "description": "Deletes a persisted document, making it immediately unavailable for retrieving content.",
        "operationId": "DeletePersistedDocumentEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to delete the persisted document.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "persistedDocumentAlias",
            "in": "path",
            "required": true,
            "description": "Unique alias of the persisted document to delete.",
            "schema": {
              "type": "string"
            },
            "example": "my-software-names"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "GraphQLPersistedDocuments"
        ],
        "summary": "Get a persisted document by alias",
        "description": "Retrieves details for a persisted document with a given alias.",
        "operationId": "GetPersistedDocumentByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve the persisted document.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "persistedDocumentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the persisted document to retrieve.",
            "schema": {
              "type": "string"
            },
            "example": "my-software-names"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersistedDocumentDto"
                },
                "example": {
                  "document": "query Software {\n  content {\n    items {\n      ... on Software {\n      name\n      }\n    }\n  }\n}",
                  "persistedDocumentAlias": "my-software-names",
                  "description": "Gets the names of software items"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/graphql/persisted-documents/{persistedDocumentAlias}/commands/rename": {
      "post": {
        "tags": [
          "GraphQLPersistedDocuments"
        ],
        "description": "Changes the alias of the persisted document, making it immediately unavailable for retrieving content with the former alias.",
        "operationId": "RenamePersistedDocumentEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to rename the persisted document.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "persistedDocumentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the persisted document to rename.",
            "schema": {
              "type": "string"
            },
            "example": "my-software-names"
          }
        ],
        "requestBody": {
          "x-name": "RenamePersistedDocumentRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenamePersistedDocumentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersistedDocumentDto"
                },
                "example": {
                  "document": "query { }",
                  "persistedDocumentAlias": "my-renamed-software-names",
                  "description": "The description of the document"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/graphql/persisted-documents/{persistedDocumentAlias}/commands/update-description": {
      "put": {
        "tags": [
          "GraphQLPersistedDocuments"
        ],
        "description": "Updates the description of a persisted document.",
        "operationId": "UpdatePersistedDocumentDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the persisted document.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "persistedDocumentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the persisted document to update.",
            "schema": {
              "type": "string"
            },
            "example": "my-software-names"
          }
        ],
        "requestBody": {
          "x-name": "UpdatePersistedDocumentDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePersistedDocumentDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersistedDocumentDto"
                },
                "example": {
                  "document": "query { }",
                  "persistedDocumentAlias": "my-software-names",
                  "description": "The new description of the document"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/graphql/persisted-documents/{persistedDocumentAlias}/commands/update-document": {
      "put": {
        "tags": [
          "GraphQLPersistedDocuments"
        ],
        "description": "Updates the body for a persisted document.",
        "operationId": "UpdatePersistedDocumentDocumentEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the persisted document.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "persistedDocumentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the persisted document to update.",
            "schema": {
              "type": "string"
            },
            "example": "my-software-names"
          }
        ],
        "requestBody": {
          "x-name": "UpdatePersistedDocumentDocumentRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePersistedDocumentDocumentRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersistedDocumentDto"
                },
                "example": {
                  "document": "query { ... new query }",
                  "persistedDocumentAlias": "my-software-names",
                  "description": "The description of the document"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Get all projects",
        "description": "Retrieves all existing projects that user has access to.",
        "operationId": "GetAllProjectsEndpoint",
        "parameters": [
          {
            "name": "first",
            "in": "query",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            }
          },
          {
            "name": "after",
            "in": "query",
            "schema": {
              "type": "string",
              "nullable": true
            }
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllProjectsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}": {
      "get": {
        "tags": [
          "Projects"
        ],
        "summary": "Get a project by alias",
        "description": "Retrieves details for a project with a given alias.",
        "operationId": "GetProjectByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the Umbraco Compose project to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "put": {
        "tags": [
          "Projects"
        ],
        "summary": "Update description of a project",
        "description": "Changes the description of a project.",
        "operationId": "UpdateProjectDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project to update.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          }
        ],
        "requestBody": {
          "x-name": "UpdateProjectDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateProjectDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDto"
                },
                "example": {
                  "projectAlias": "considerate-cute-otter",
                  "description": "New Project description",
                  "region": "germanywestcentral",
                  "clientId": null,
                  "clientSecret": null
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/type-schemas": {
      "put": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Bulk upsert type schemas",
        "description": "Creates or updates multiple type schemas in a single transaction. Only changed schemas generate notifications.",
        "operationId": "UpsertBulkTypeSchemaEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to upsert type schemas.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          }
        ],
        "requestBody": {
          "x-name": "typeSchemas",
          "description": "Array of type schemas to create or update.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "example": [
                  {
                    "typeSchemaAlias": "software",
                    "description": "Software type schema",
                    "schema": {
                      "$schema": "https://umbracocompose.com/v1/schema",
                      "properties": {
                        "name": {
                          "type": "string"
                        }
                      }
                    }
                  },
                  {
                    "typeSchemaAlias": "hardware",
                    "description": "Hardware type schema",
                    "schema": {
                      "$schema": "https://umbracocompose.com/v1/schema",
                      "properties": {
                        "model": {
                          "type": "string"
                        }
                      }
                    }
                  }
                ],
                "items": {
                  "$ref": "#/components/schemas/BulkTypeSchemaEntry"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpsertBulkTypeSchemaResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "post": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Create a type schema",
        "description": "Creates a type schema to describe the structure of your content.",
        "operationId": "CreateTypeSchemaEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to create a type schema.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          }
        ],
        "requestBody": {
          "x-name": "CreateTypeSchemaRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateTypeSchemaRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TypeSchemaDto"
                },
                "example": {
                  "schema": {
                    "$schema": "https://umbracocompose.com/v1/schema",
                    "allOf": [
                      {
                        "$ref": "https://umbracocompose.com/v1/node"
                      }
                    ],
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    }
                  },
                  "typeSchemaAlias": "software",
                  "description": "Type Schema Description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Get all type schemas",
        "description": "Retrieves all the type schemas for an environment.",
        "operationId": "GetEnvironmentTypeSchemasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve type schemas.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            },
            "example": 25
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "example": null
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            },
            "example": false
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEnvironmentTypeSchemasResponse"
                },
                "example": {
                  "edges": [
                    {
                      "cursor": "c29mdHdhcmU=",
                      "node": {
                        "typeSchemaAlias": "software",
                        "description": "Type Schema Description"
                      }
                    },
                    {
                      "cursor": "Y29udGVudA==",
                      "node": {
                        "typeSchemaAlias": "content",
                        "description": "Type Schema Description"
                      }
                    }
                  ],
                  "pageInfo": {
                    "firstCursor": "c29mdHdhcmU=",
                    "lastCursor": "Y29udGVudA==",
                    "hasPreviousPage": false,
                    "hasNextPage": false
                  },
                  "totalCount": 2
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/type-schemas/{typeSchemaAlias}": {
      "delete": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Delete a type schema",
        "description": "Deletes a type schema.",
        "operationId": "DeleteTypeSchemaEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to delete the type schema.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "typeSchemaAlias",
            "in": "path",
            "required": true,
            "description": "Unique alias of the type schema to delete.",
            "schema": {
              "type": "string"
            },
            "example": "myschema"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Get a type schema by alias",
        "description": "Retrieves details for a type schema with a given alias.",
        "operationId": "GetTypeSchemaByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve the type schema.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "typeSchemaAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the type schema to retrieve.",
            "schema": {
              "type": "string"
            },
            "example": "software"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TypeSchemaDto"
                },
                "example": {
                  "schema": {
                    "$schema": "https://umbracocompose.com/v1/schema",
                    "allOf": [
                      {
                        "$ref": "https://umbracocompose.com/v1/node"
                      }
                    ],
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "sku": {
                        "type": "string"
                      }
                    }
                  },
                  "typeSchemaAlias": "software",
                  "description": "Type Schema Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/type-schemas/{typeSchemaAlias}/commands/rename": {
      "post": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Rename a type schema",
        "description": "Changes the alias of a given type schema.",
        "operationId": "RenameTypeSchemaEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to rename the type schema.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "typeSchemaAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the type schema to rename.",
            "schema": {
              "type": "string"
            },
            "example": "software"
          }
        ],
        "requestBody": {
          "x-name": "RenameTypeSchemaRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameTypeSchemaRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TypeSchemaDto"
                },
                "example": {
                  "schema": {
                    "$schema": "https://umbracocompose.com/v1/schema",
                    "allOf": [
                      {
                        "$ref": "https://umbracocompose.com/v1/node"
                      }
                    ],
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      }
                    }
                  },
                  "typeSchemaAlias": "service",
                  "description": "Type Schema Description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/type-schemas/{typeSchemaAlias}/commands/update-description": {
      "put": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Update description of a type schema",
        "description": "Changes the description of a type schema.",
        "operationId": "UpdateTypeSchemaDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the type schema.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "typeSchemaAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the type schema to update.",
            "schema": {
              "type": "string"
            },
            "example": "software"
          }
        ],
        "requestBody": {
          "x-name": "UpdateTypeSchemaDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateTypeSchemaDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TypeSchemaDto"
                },
                "example": {
                  "schema": {
                    "$schema": "https://umbracocompose.com/v1/schema",
                    "allOf": {
                      "$ref": "https://umbracocompose.com/v1/node"
                    },
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    }
                  },
                  "typeSchemaAlias": "send-on-create",
                  "description": "New Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/type-schemas/{typeSchemaAlias}/commands/update-schema": {
      "put": {
        "tags": [
          "TypeSchemas"
        ],
        "summary": "Update JSON schema for a type schema",
        "description": "Updates the JSON schema for a type schema.",
        "operationId": "UpdateTypeSchemaSchemaEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the type schema.",
            "schema": {
              "type": "string"
            },
            "example": "production"
          },
          {
            "name": "typeSchemaAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the type schema to update.",
            "schema": {
              "type": "string"
            },
            "example": "software"
          }
        ],
        "requestBody": {
          "x-name": "schema",
          "description": "New JSON type schema.",
          "content": {
            "application/json": {
              "schema": {
                "example": {
                  "$schema": "https://umbracocompose.com/v1/schema",
                  "allOf": [
                    {
                      "$ref": "https://umbracocompose.com/v1/node"
                    }
                  ],
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "sku": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TypeSchemaDto"
                },
                "example": {
                  "schema": {
                    "$schema": "https://umbracocompose.com/v1/schema",
                    "allOf": [
                      {
                        "$ref": "https://umbracocompose.com/v1/node"
                      }
                    ],
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "sku": {
                        "type": "string"
                      }
                    }
                  },
                  "typeSchemaAlias": "software",
                  "description": "Type Schema Description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/me/api-keys": {
      "post": {
        "tags": [
          "UserApiKeys"
        ],
        "summary": "Create an API key",
        "description": "Creates an API key for authenticating and authorizing to the Ingestion and GraphQL APIs. May be scoped to specific resources and environments.",
        "operationId": "CreateUserApiKeyEndpoint",
        "requestBody": {
          "x-name": "CreateUserApiKeyRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserApiKeyRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserApiKeyDto"
                },
                "example": {
                  "environmentAliases": [
                    "production"
                  ],
                  "scopes": [
                    "graphql"
                  ],
                  "apiKey": "BInOK+4qw8g7V11OKAbf94c~t-cvY1Jj9D636K1o1jFoBX/A18",
                  "apiKeyAlias": "my-first-api-key",
                  "description": "This is my first API Key",
                  "projectAlias": "considerate-cute-otter",
                  "validUntil": "2026-09-17T12:00:00"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "UserApiKeys"
        ],
        "summary": "Get all API keys",
        "description": "Retrieves details of all the API keys you have created.",
        "operationId": "GetAllUserApiKeysEndpoint",
        "parameters": [
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            },
            "example": 25
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "example": null
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            },
            "example": false
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetAllUserApiKeysResponse"
                },
                "example": {
                  "edges": [
                    {
                      "cursor": "bXktZmlyc3QtYXBpLWtleQ==",
                      "node": {
                        "apiKeyAlias": "my-first-api-key",
                        "description": "Example description",
                        "projectAlias": "considerate-cute-otter",
                        "validUntil": "2026-09-17T11:00:00Z"
                      }
                    },
                    {
                      "cursor": "bXktc2Vjb25kLWFwaS1rZXk=",
                      "node": {
                        "apiKeyAlias": "my-second-api-key",
                        "description": null,
                        "projectAlias": "extremely-fun-rabbit",
                        "validUntil": "2026-09-17T11:00:00Z"
                      }
                    }
                  ],
                  "pageInfo": null,
                  "totalCount": 2
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/me/api-keys/{apiKeyAlias}": {
      "delete": {
        "tags": [
          "UserApiKeys"
        ],
        "summary": "Delete an API key by alias",
        "description": "Deletes an API key with a given alias. Subsequent requests to any APIs using the key will immediately begin to fail.",
        "operationId": "DeleteUserApiKeyEndpoint",
        "parameters": [
          {
            "name": "apiKeyAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the API key to delete.",
            "schema": {
              "type": "string"
            },
            "example": "my-api-key"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "UserApiKeys"
        ],
        "summary": "Get an API key",
        "description": "Retrieves details for an API key you have created.",
        "operationId": "GetUserApiKeyByAliasEndpoint",
        "parameters": [
          {
            "name": "apiKeyAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the API key to retrieve.",
            "schema": {
              "type": "string"
            },
            "example": "my-first-api-key"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserApiKeyDto"
                },
                "example": {
                  "environmentAliases": [
                    "production"
                  ],
                  "scopes": [
                    "graphql"
                  ],
                  "apiKey": null,
                  "apiKeyAlias": "my-first-api-key",
                  "description": "This is my first API Key",
                  "projectAlias": "considerate-cute-otter",
                  "validUntil": "2026-09-17T11:00:00Z"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/me/api-keys/{apiKeyAlias}/commands/update-description": {
      "put": {
        "tags": [
          "UserApiKeys"
        ],
        "summary": "Update description for an API key",
        "description": "Changes the description of a given API key.",
        "operationId": "UpdateUserApiKeyDescriptionEndpoint",
        "parameters": [
          {
            "name": "apiKeyAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the API key to update.",
            "schema": {
              "type": "string"
            },
            "example": "my-first-api-key"
          }
        ],
        "requestBody": {
          "x-name": "UpdateUserApiKeyDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserApiKeyDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserApiKeyDto"
                },
                "example": {
                  "environmentAliases": [
                    "development",
                    "staging"
                  ],
                  "scopes": [
                    "ingestion"
                  ],
                  "apiKey": null,
                  "apiKeyAlias": "my-first-api-key",
                  "description": "Updated description",
                  "projectAlias": "considerate-cute-otter",
                  "validUntil": "2026-09-17T11:00:00Z"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/me/api-keys/{apiKeyAlias}/commands/update-environments": {
      "put": {
        "tags": [
          "UserApiKeys"
        ],
        "summary": "Update environments for an API key",
        "description": "Changes the valid environments for a given API key.",
        "operationId": "UpdateUserApiKeyEnvironmentsEndpoint",
        "parameters": [
          {
            "name": "apiKeyAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the API key to update.",
            "schema": {
              "type": "string"
            },
            "example": "my-first-api-key"
          }
        ],
        "requestBody": {
          "x-name": "UpdateUserApiKeyEnvironmentsRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserApiKeyEnvironmentsRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserApiKeyDto"
                },
                "example": {
                  "environmentAliases": [
                    "development",
                    "staging"
                  ],
                  "scopes": [
                    "ingestion"
                  ],
                  "apiKey": null,
                  "apiKeyAlias": "my-first-api-key",
                  "description": "Example description",
                  "projectAlias": "considerate-cute-otter",
                  "validUntil": "2026-09-17T11:00:00Z"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/me/api-keys/{apiKeyAlias}/commands/update-scopes": {
      "put": {
        "tags": [
          "UserApiKeys"
        ],
        "summary": "Update scopes for an API key",
        "description": "Changes the valid scopes for a given API key.",
        "operationId": "UpdateUserApiKeyScopesEndpoint",
        "parameters": [
          {
            "name": "apiKeyAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the API key to update.",
            "schema": {
              "type": "string"
            },
            "example": "my-first-api-key"
          }
        ],
        "requestBody": {
          "x-name": "UpdateUserApiKeyScopesRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateUserApiKeyScopesRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserApiKeyDto"
                },
                "example": {
                  "environmentAliases": [
                    "development",
                    "staging"
                  ],
                  "scopes": [
                    "ingestion"
                  ],
                  "apiKey": null,
                  "apiKeyAlias": "my-first-api-key",
                  "description": "Example description",
                  "projectAlias": "considerate-cute-otter",
                  "validUntil": "2026-09-17T11:00:00Z"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": [
              "User"
            ]
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Create a webhook",
        "description": "Creates a webhook that will call an external endpoint whenever a given event occurs to some content.",
        "operationId": "CreateWebhookEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "Alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "The environment on which to create the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          }
        ],
        "requestBody": {
          "x-name": "CreateWebhookRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/projects",
                  "eventTypes": [
                    "content.ingested"
                  ],
                  "typeSchemaAliases": [],
                  "collectionAliases": [],
                  "customHeaders": {
                    "header-1": "value-1"
                  },
                  "webhookAlias": "send-on-create-schema",
                  "description": "Webhook Description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get all webhooks",
        "description": "Retrieves all configured webhooks for an environment.",
        "operationId": "GetEnvironmentWebhooksEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve webhook configuration.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "first",
            "in": "query",
            "description": "Count of items to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 25,
              "nullable": false
            },
            "example": 25
          },
          {
            "name": "after",
            "in": "query",
            "description": "Only return items after this cursor value.",
            "schema": {
              "type": "string",
              "nullable": true
            },
            "example": null
          },
          {
            "name": "includePageInfo",
            "in": "query",
            "description": "Whether or not to include pagination information in the response.",
            "schema": {
              "type": "boolean",
              "default": false,
              "nullable": false
            },
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetEnvironmentWebhooksResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}": {
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete a webhook",
        "description": "Deletes a webhook.",
        "operationId": "DeleteWebhookEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to delete the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Unique alias of the webhook to delete.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create-schema"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      },
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get a webhook by alias",
        "description": "Retrieves details for a webhook with a given alias.",
        "operationId": "GetWebhookByAliasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment from which to retrieve the webhook.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to retrieve.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}/commands/rename": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Rename a webhook",
        "description": "Changes the alias of a given webhook.",
        "operationId": "RenameWebhookEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to rename the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "dev"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to rename.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create-schema"
          }
        ],
        "requestBody": {
          "x-name": "RenameWebhookRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RenameWebhookRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/projects",
                  "eventTypes": [
                    "content.ingested"
                  ],
                  "typeSchemaAliases": [],
                  "collectionAliases": [],
                  "customHeaders": {
                    "field1": "value1"
                  },
                  "webhookAlias": "send-on-create-schema-updated",
                  "description": "Webhook Description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}/commands/update-collections": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update collections for a webhook",
        "description": "Filters a webhook such that it will only fire if it affects content in one of the given collectionsz.",
        "operationId": "UpdateWebhookCollectionsEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to update.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create"
          }
        ],
        "requestBody": {
          "x-name": "UpdateWebhookCollectionsRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookCollectionsRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/projects",
                  "eventTypes": [
                    "content.deleted"
                  ],
                  "typeSchemaAliases": [],
                  "collectionAliases": [
                    "content"
                  ],
                  "customHeaders": {
                    "field1": "value1",
                    "field2": "value2"
                  },
                  "webhookAlias": "send-on-create",
                  "description": "Webhook Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}/commands/update-description": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update description of a webhook",
        "description": "Changes the description of a webhook.",
        "operationId": "UpdateWebhookDescriptionEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to update.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create"
          }
        ],
        "requestBody": {
          "x-name": "UpdateWebhookDescriptionRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookDescriptionRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/projects",
                  "eventTypes": [
                    "content.ingested"
                  ],
                  "typeSchemaAliases": [],
                  "collectionAliases": [],
                  "customHeaders": {
                    "my-header": "my-value"
                  },
                  "webhookAlias": "send-on-create",
                  "description": "New Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}/commands/update-event-types": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update event types for a webhook",
        "description": "Changes the types of events that cause a webhook to trigger.",
        "operationId": "UpdateWebhookEventTypesEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to update.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create"
          }
        ],
        "requestBody": {
          "x-name": "UpdateWebhookEventTypesRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookEventTypesRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/projects",
                  "eventTypes": [
                    "content.deleted"
                  ],
                  "typeSchemaAliases": [],
                  "collectionAliases": [],
                  "customHeaders": {
                    "field1": "value1",
                    "field2": "value2"
                  },
                  "webhookAlias": "send-on-create",
                  "description": "Webhook Description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}/commands/update-headers": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update headers for a webhook",
        "description": "Changes the HTTP headers that are sent with the request when a webhook is fired.",
        "operationId": "UpdateWebhookHeadersEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to update.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create"
          }
        ],
        "requestBody": {
          "x-name": "UpdateWebhookHeadersRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookHeadersRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/projects",
                  "eventTypes": [
                    "content.ingested"
                  ],
                  "typeSchemaAliases": [],
                  "collectionAliases": [],
                  "customHeaders": {
                    "my-header": "my-value"
                  },
                  "webhookAlias": "send-on-create",
                  "description": "Webhook Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}/commands/update-type-schemas": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update type schemas for a webhook",
        "description": "Filters a webhook such that it will only fire if it affects content with one of the given type schemas.",
        "operationId": "UpdateWebhookTypeSchemasEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to update.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create"
          }
        ],
        "requestBody": {
          "x-name": "UpdateWebhookTypeSchemasRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookTypeSchemasRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/projects",
                  "eventTypes": [
                    "content.deleted"
                  ],
                  "typeSchemaAliases": [
                    "software"
                  ],
                  "collectionAliases": [],
                  "customHeaders": {
                    "field1": "value1",
                    "field2": "value2"
                  },
                  "webhookAlias": "send-on-create",
                  "description": "Webhook Description"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    },
    "/v1/projects/{projectAlias}/environments/{environmentAlias}/webhooks/{webhookAlias}/commands/update-url": {
      "put": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Update URL for a webhook",
        "description": "Changes the destination URL for a webhook.",
        "operationId": "UpdateWebhookUrlEndpoint",
        "parameters": [
          {
            "name": "projectAlias",
            "in": "path",
            "required": true,
            "description": "The alias of your Umbraco Compose project.",
            "schema": {
              "type": "string"
            },
            "example": "considerate-cute-otter"
          },
          {
            "name": "environmentAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the environment on which to update the webhook.",
            "schema": {
              "type": "string"
            },
            "example": "development"
          },
          {
            "name": "webhookAlias",
            "in": "path",
            "required": true,
            "description": "Alias of the webhook to update.",
            "schema": {
              "type": "string"
            },
            "example": "send-on-create"
          }
        ],
        "requestBody": {
          "x-name": "UpdateWebhookUrlRequest",
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookUrlRequest"
              }
            }
          },
          "required": true,
          "x-position": 1
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookDto"
                },
                "example": {
                  "url": "https://example.com/new-endpoint",
                  "eventTypes": [
                    "content.ingested"
                  ],
                  "typeSchemaAliases": [],
                  "collectionAliases": [],
                  "customHeaders": {
                    "field1": "value1",
                    "field2": "value2"
                  },
                  "webhookAlias": "send-on-create",
                  "description": "Webhook Description"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          },
          "403": {
            "description": "Forbidden"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "security": [
          {
            "OpenId": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ApiApplicationDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ApiApplicationSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "scopes"
            ],
            "properties": {
              "scopes": {
                "$ref": "#/components/schemas/ApiApplicationScopesResponse"
              },
              "clientSecret": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "ApiApplicationScopesResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "project",
          "environments"
        ],
        "properties": {
          "project": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "project:admin",
                "graphql:introspection",
                "graphql",
                "project:write",
                "project",
                "ingestion"
              ]
            }
          },
          "environments": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "graphql",
                  "ingestion",
                  "graphql:introspection",
                  "typeschema",
                  "typeschema:write"
                ]
              }
            }
          }
        }
      },
      "ApiApplicationSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "apiApplicationAlias",
          "clientId"
        ],
        "properties": {
          "apiApplicationAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "clientId": {
            "type": "string"
          }
        }
      },
      "CreateApiApplicationRequest": {
        "type": "object",
        "example": {
          "apiApplicationAlias": "my-api-application",
          "description": "My API Application",
          "scopes": {
            "project": [
              "project"
            ],
            "environments": null
          }
        },
        "additionalProperties": false,
        "required": [
          "apiApplicationAlias",
          "scopes"
        ],
        "properties": {
          "apiApplicationAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this API application.",
            "minLength": 1,
            "nullable": false,
            "example": "my-api-application"
          },
          "description": {
            "type": "string",
            "description": "Human-friendly description of the application.",
            "nullable": true,
            "example": "My API Application"
          },
          "scopes": {
            "description": "Set of permissions for the application.",
            "nullable": false,
            "example": {
              "project": [
                "project"
              ],
              "environments": null
            },
            "$ref": "#/components/schemas/ApiApplicationScopes"
          }
        }
      },
      "ApiApplicationScopes": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "project": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "string",
              "enum": [
                "project:admin",
                "graphql:introspection",
                "graphql",
                "project:write",
                "project",
                "ingestion"
              ]
            }
          },
          "environments": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "graphql",
                  "ingestion",
                  "graphql:introspection",
                  "typeschema",
                  "typeschema:write"
                ]
              }
            }
          }
        }
      },
      "ProblemDetails": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "title",
          "status",
          "instance",
          "traceId",
          "errors"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "https://www.rfc-editor.org/rfc/rfc7231#section-6.5.1"
          },
          "title": {
            "type": "string",
            "default": "One or more validation errors occurred."
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "default": 400
          },
          "instance": {
            "type": "string",
            "default": "/api/route"
          },
          "traceId": {
            "type": "string",
            "default": "0HMPNHL0JHL76:00000001"
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProblemDetails_Error"
            }
          }
        }
      },
      "ProblemDetails_Error": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "name",
          "reason"
        ],
        "properties": {
          "name": {
            "type": "string",
            "default": "Error or field name"
          },
          "reason": {
            "type": "string",
            "default": "Error reason"
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "severity": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "DeleteApiApplicationRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetApiApplicationByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetProjectApiApplicationsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfApiApplicationSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfApiApplicationSlimDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfApiApplicationSlimDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfApiApplicationSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApiApplicationSlimDto"
              }
            ]
          }
        }
      },
      "PageInfo": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "hasPreviousPage",
          "hasNextPage"
        ],
        "properties": {
          "firstCursor": {
            "type": "string",
            "nullable": true
          },
          "lastCursor": {
            "type": "string",
            "nullable": true
          },
          "hasPreviousPage": {
            "type": "boolean"
          },
          "hasNextPage": {
            "type": "boolean"
          }
        }
      },
      "GetProjectApiApplicationsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RegenerateApiApplicationClientSecretRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RenameApiApplicationRequest": {
        "type": "object",
        "example": {
          "newApiApplicationAlias": "renamed-api-application"
        },
        "additionalProperties": false,
        "required": [
          "newApiApplicationAlias"
        ],
        "properties": {
          "newApiApplicationAlias": {
            "type": "string",
            "description": "New alias of the API application.",
            "minLength": 1,
            "nullable": false,
            "example": "renamed-api-application"
          }
        }
      },
      "UpdateApiApplicationDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "New description"
        },
        "additionalProperties": false,
        "required": [
          "newDescription"
        ],
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "Updated description of the API application.",
            "example": "New description"
          }
        }
      },
      "UpdateApiApplicationScopesRequest": {
        "type": "object",
        "example": {
          "newScopes": {
            "project": [
              "project:write"
            ],
            "environments": null
          }
        },
        "additionalProperties": false,
        "required": [
          "newScopes"
        ],
        "properties": {
          "newScopes": {
            "description": "Updated scopes of the API Application.",
            "nullable": false,
            "example": {
              "project": [
                "project:write"
              ],
              "environments": null
            },
            "$ref": "#/components/schemas/ApiApplicationScopes"
          }
        }
      },
      "CollectionDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "collectionAlias"
        ],
        "properties": {
          "collectionAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateCollectionRequest": {
        "type": "object",
        "example": {
          "collectionAlias": "content",
          "description": "Collection description"
        },
        "additionalProperties": false,
        "required": [
          "collectionAlias"
        ],
        "properties": {
          "collectionAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this collection.",
            "minLength": 1,
            "nullable": false,
            "example": "content"
          },
          "description": {
            "type": "string",
            "description": "Description of the collection.",
            "nullable": true,
            "example": "Collection description"
          }
        }
      },
      "DeleteCollectionRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetCollectionByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEnvironmentCollectionsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfCollectionDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfCollectionDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfCollectionDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfCollectionDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/CollectionDto"
              }
            ]
          }
        }
      },
      "GetEnvironmentCollectionsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RenameCollectionRequest": {
        "type": "object",
        "example": {
          "newCollectionAlias": "media"
        },
        "additionalProperties": false,
        "required": [
          "newCollectionAlias"
        ],
        "properties": {
          "newCollectionAlias": {
            "type": "string",
            "description": "New alias for the collection.",
            "minLength": 1,
            "nullable": false,
            "example": "media"
          }
        }
      },
      "UpdateCollectionDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "New description"
        },
        "additionalProperties": false,
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "New description of the collection.",
            "nullable": true,
            "example": "New description"
          }
        }
      },
      "EnvironmentDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "environmentAlias"
        ],
        "properties": {
          "environmentAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateEnvironmentRequest": {
        "type": "object",
        "example": {
          "environmentAlias": "development",
          "description": "Environment description"
        },
        "additionalProperties": false,
        "required": [
          "environmentAlias"
        ],
        "properties": {
          "environmentAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this environment.",
            "minLength": 1,
            "nullable": false,
            "example": "development"
          },
          "description": {
            "type": "string",
            "description": "Description of the environment.",
            "nullable": true,
            "example": "Environment description"
          }
        }
      },
      "DeleteEnvironmentRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEnvironmentByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetProjectEnvironmentsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfEnvironmentDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfEnvironmentDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfEnvironmentDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfEnvironmentDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/EnvironmentDto"
              }
            ]
          }
        }
      },
      "GetProjectEnvironmentsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RenameEnvironmentRequest": {
        "type": "object",
        "example": {
          "newEnvironmentAlias": "dev"
        },
        "additionalProperties": false,
        "required": [
          "newEnvironmentAlias"
        ],
        "properties": {
          "newEnvironmentAlias": {
            "type": "string",
            "description": "New alias for the environment.",
            "minLength": 1,
            "nullable": false,
            "example": "dev"
          }
        }
      },
      "UpdateEnvironmentDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "New description"
        },
        "additionalProperties": false,
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "New description of the environment.",
            "nullable": true,
            "example": "New description"
          }
        }
      },
      "IngestionFunctionDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/IngestionFunctionSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "script"
            ],
            "properties": {
              "script": {
                "type": "string"
              }
            }
          }
        ]
      },
      "IngestionFunctionSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ingestionFunctionAlias"
        ],
        "properties": {
          "ingestionFunctionAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateIngestionFunctionRequest": {
        "type": "object",
        "example": {
          "ingestionFunctionAlias": "umbraco-content",
          "description": "Maps Umbraco Content",
          "script": "export default function(data) {\n  const { id, variant, contentTypeAlias, ...entry } = data\n  return [{ action: 'add', id: id, variant: variant, type: contentTypeAlias, data: entry }]\n}"
        },
        "additionalProperties": false,
        "required": [
          "ingestionFunctionAlias",
          "script"
        ],
        "properties": {
          "ingestionFunctionAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this ingestion function.",
            "minLength": 1,
            "nullable": false,
            "example": "umbraco-content"
          },
          "description": {
            "type": "string",
            "description": "Human-friendly description for this function.",
            "nullable": true,
            "example": "Maps Umbraco Content"
          },
          "script": {
            "type": "string",
            "description": "Javascript body that contains the function.",
            "minLength": 1,
            "nullable": false,
            "example": "export default function(data) {\n  const { id, variant, contentTypeAlias, ...entry } = data\n  return [{ action: 'add', id: id, variant: variant, type: contentTypeAlias, data: entry }]\n}"
          }
        }
      },
      "DeleteIngestionFunctionRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetIngestionFunctionByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEnvironmentIngestionFunctionsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfIngestionFunctionSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfIngestionFunctionSlimDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfIngestionFunctionSlimDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfIngestionFunctionSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/IngestionFunctionSlimDto"
              }
            ]
          }
        }
      },
      "GetEnvironmentIngestionFunctionsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RenameIngestionFunctionRequest": {
        "type": "object",
        "example": {
          "newIngestionFunctionAlias": "new-umbraco-content"
        },
        "additionalProperties": false,
        "required": [
          "newIngestionFunctionAlias"
        ],
        "properties": {
          "newIngestionFunctionAlias": {
            "type": "string",
            "description": "New alias for the function.",
            "minLength": 1,
            "nullable": false,
            "example": "new-umbraco-content"
          }
        }
      },
      "UpdateIngestionFunctionDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "Transforms Umbraco Content"
        },
        "additionalProperties": false,
        "required": [
          "newDescription"
        ],
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "New description for the query.",
            "example": "Transforms Umbraco Content"
          }
        }
      },
      "UpdateIngestionFunctionScriptRequest": {
        "type": "object",
        "example": {
          "script": "export default (data) =>\n  data.map(item => {\n    const { id, variant, contentTypeAlias, ...entry } = item\n    return { action: 'add', id: id, variant: variant, type: contentTypeAlias, data: entry }\n  })"
        },
        "additionalProperties": false,
        "required": [
          "script"
        ],
        "properties": {
          "script": {
            "type": "string",
            "description": "New script for the function.",
            "minLength": 1,
            "nullable": false,
            "example": "export default (data) =>\n  data.map(item => {\n    const { id, variant, contentTypeAlias, ...entry } = item\n    return { action: 'add', id: id, variant: variant, type: contentTypeAlias, data: entry }\n  })"
          }
        }
      },
      "PersistedDocumentDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PersistedDocumentSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "document"
            ],
            "properties": {
              "document": {
                "type": "string"
              }
            }
          }
        ]
      },
      "PersistedDocumentSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "persistedDocumentAlias"
        ],
        "properties": {
          "persistedDocumentAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreatePersistedDocumentRequest": {
        "type": "object",
        "example": {
          "persistedDocumentAlias": "my-software-names",
          "description": "Gets the names of software items",
          "document": "query Software {\n  content {\n    items {\n      ... on Software {\n      name\n      }\n    }\n  }\n}"
        },
        "additionalProperties": false,
        "required": [
          "persistedDocumentAlias",
          "document",
          "description"
        ],
        "properties": {
          "persistedDocumentAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this persisted document.",
            "minLength": 1,
            "nullable": false,
            "example": "my-software-names"
          },
          "description": {
            "type": "string",
            "description": "Human-friendly description for this persisted document.",
            "example": "Gets the names of software items"
          },
          "document": {
            "type": "string",
            "description": "GraphQL body of the persisted document.",
            "minLength": 1,
            "nullable": false,
            "example": "query Software {\n  content {\n    items {\n      ... on Software {\n      name\n      }\n    }\n  }\n}"
          }
        }
      },
      "DeletePersistedDocumentRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAllPersistedDocumentsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfPersistedDocumentSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfPersistedDocumentSlimDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfPersistedDocumentSlimDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfPersistedDocumentSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PersistedDocumentSlimDto"
              }
            ]
          }
        }
      },
      "GetAllPersistedDocumentsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetPersistedDocumentByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RenamePersistedDocumentRequest": {
        "type": "object",
        "example": {
          "newPersistedDocumentAlias": "my-renamed-software-names"
        },
        "additionalProperties": false,
        "required": [
          "newPersistedDocumentAlias"
        ],
        "properties": {
          "newPersistedDocumentAlias": {
            "type": "string",
            "description": "New alias for the persisted document.",
            "minLength": 1,
            "nullable": false,
            "example": "my-renamed-software-names"
          }
        }
      },
      "UpdatePersistedDocumentDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "new description"
        },
        "additionalProperties": false,
        "required": [
          "newDescription"
        ],
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "New description for the persisted document.",
            "example": "new description"
          }
        }
      },
      "UpdatePersistedDocumentDocumentRequest": {
        "type": "object",
        "example": {
          "newDocument": "query { ... new query }"
        },
        "additionalProperties": false,
        "required": [
          "newDocument"
        ],
        "properties": {
          "newDocument": {
            "type": "string",
            "description": "New GraphQL body for the persisted document.",
            "minLength": 1,
            "nullable": false,
            "example": "query { ... new query }"
          }
        }
      },
      "GetAllProjectsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfProjectDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfProjectDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfProjectDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfProjectDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/ProjectDto"
              }
            ]
          }
        }
      },
      "ProjectDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "projectAlias",
          "region"
        ],
        "properties": {
          "projectAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "region": {
            "type": "string"
          },
          "clientId": {
            "type": "string",
            "nullable": true
          },
          "clientSecret": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "GetAllProjectsRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetProjectByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "UpdateProjectDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "New project description"
        },
        "additionalProperties": false,
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "New description of the project.",
            "nullable": true,
            "example": "New project description"
          }
        }
      },
      "UpsertBulkTypeSchemaResponse": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "results"
        ],
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BulkUpsertResult"
            }
          }
        }
      },
      "BulkUpsertResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "typeSchemaAlias",
          "status"
        ],
        "properties": {
          "typeSchemaAlias": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        }
      },
      "TypeSchemaDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/TypeSchemaSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "schema"
            ],
            "properties": {
              "schema": {}
            }
          }
        ]
      },
      "BulkTypeSchemaEntry": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "typeSchemaAlias",
          "schema"
        ],
        "properties": {
          "typeSchemaAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "schema": {}
        }
      },
      "TypeSchemaSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "typeSchemaAlias"
        ],
        "properties": {
          "typeSchemaAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateTypeSchemaRequest": {
        "type": "object",
        "example": {
          "typeSchemaAlias": "software",
          "description": "Type Schema Description",
          "schema": {
            "$schema": "https://umbracocompose.com/v1/schema",
            "allOf": [
              {
                "$ref": "https://umbracocompose.com/v1/node"
              }
            ],
            "properties": {
              "name": {
                "type": "string"
              }
            }
          }
        },
        "additionalProperties": false,
        "required": [
          "typeSchemaAlias",
          "schema"
        ],
        "properties": {
          "typeSchemaAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this type schema.",
            "minLength": 1,
            "nullable": false,
            "example": "software"
          },
          "description": {
            "type": "string",
            "description": "Description of the type schema.",
            "nullable": true,
            "example": "Type Schema Description"
          },
          "schema": {
            "description": "JSON schema describing the type.",
            "minLength": 1,
            "nullable": false,
            "example": {
              "$schema": "https://umbracocompose.com/v1/schema",
              "allOf": [
                {
                  "$ref": "https://umbracocompose.com/v1/node"
                }
              ],
              "properties": {
                "name": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "DeleteTypeSchemaRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetTypeSchemaByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEnvironmentTypeSchemasResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfTypeSchemaSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfTypeSchemaSlimDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfTypeSchemaSlimDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfTypeSchemaSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/TypeSchemaSlimDto"
              }
            ]
          }
        }
      },
      "GetEnvironmentTypeSchemasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RenameTypeSchemaRequest": {
        "type": "object",
        "example": {
          "newTypeSchemaAlias": "service"
        },
        "additionalProperties": false,
        "required": [
          "newTypeSchemaAlias"
        ],
        "properties": {
          "newTypeSchemaAlias": {
            "type": "string",
            "description": "New alias for the type schema.",
            "minLength": 1,
            "nullable": false,
            "example": "service"
          }
        }
      },
      "UpdateTypeSchemaDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "New description"
        },
        "additionalProperties": false,
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "New description of the type schema.",
            "nullable": true,
            "example": "New description"
          }
        }
      },
      "UserApiKeyDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/UserApiKeySlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "environmentAliases",
              "scopes"
            ],
            "properties": {
              "environmentAliases": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "scopes": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "ingestion",
                    "graphql",
                    "graphql:introspection"
                  ]
                }
              },
              "apiKey": {
                "type": "string",
                "nullable": true
              }
            }
          }
        ]
      },
      "UserApiKeySlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "apiKeyAlias",
          "projectAlias",
          "validUntil"
        ],
        "properties": {
          "apiKeyAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "projectAlias": {
            "type": "string"
          },
          "validUntil": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CreateUserApiKeyRequest": {
        "type": "object",
        "example": {
          "apiKeyAlias": "my-first-api-key",
          "description": "This is my first API Key",
          "projectAlias": "considerate-cute-otter",
          "environmentAliases": [
            "production"
          ],
          "scopes": [
            "graphql"
          ],
          "validUntil": "2026-09-17T12:00:00+01:00"
        },
        "additionalProperties": false,
        "required": [
          "apiKeyAlias",
          "projectAlias",
          "scopes",
          "validUntil"
        ],
        "properties": {
          "apiKeyAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this API key.",
            "minLength": 1,
            "nullable": false,
            "example": "my-first-api-key"
          },
          "description": {
            "type": "string",
            "description": "Human-friendly description for this API key.",
            "nullable": true,
            "example": "This is my first API Key"
          },
          "projectAlias": {
            "type": "string",
            "description": "The alias of your Umbraco Compose project.",
            "minLength": 1,
            "nullable": false,
            "example": "considerate-cute-otter"
          },
          "environmentAliases": {
            "type": "array",
            "description": "Aliases of environments for which the key will be valid.",
            "nullable": true,
            "example": [
              "production"
            ],
            "items": {
              "type": "string"
            }
          },
          "scopes": {
            "type": "array",
            "description": "The set of scopes for which the key will be valid.",
            "minLength": 1,
            "nullable": false,
            "example": [
              "graphql"
            ],
            "items": {
              "type": "string",
              "enum": [
                "ingestion",
                "graphql",
                "graphql:introspection"
              ]
            }
          },
          "validUntil": {
            "type": "string",
            "description": "The time at which the key will expire and no longer be usable.",
            "format": "date-time",
            "minLength": 1,
            "nullable": false,
            "example": "2026-09-17T12:00:00+01:00"
          }
        }
      },
      "DeleteUserApiKeyRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetAllUserApiKeysResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfUserApiKeySlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfUserApiKeySlimDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfUserApiKeySlimDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfUserApiKeySlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/UserApiKeySlimDto"
              }
            ]
          }
        }
      },
      "GetAllUserApiKeysRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetUserApiKeyByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "UpdateUserApiKeyDescriptionRequest": {
        "type": "object",
        "example": {
          "description": "Example description"
        },
        "additionalProperties": false,
        "properties": {
          "description": {
            "type": "string",
            "description": "New description for the API key.",
            "nullable": true,
            "example": "Example description"
          }
        }
      },
      "UpdateUserApiKeyEnvironmentsRequest": {
        "type": "object",
        "example": {
          "environmentAliases": [
            "development",
            "staging"
          ]
        },
        "additionalProperties": false,
        "properties": {
          "environmentAliases": {
            "type": "array",
            "description": "Aliases of environments for which the API key is valid.",
            "nullable": true,
            "example": [
              "development",
              "staging"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateUserApiKeyScopesRequest": {
        "type": "object",
        "example": {
          "scopes": [
            "ingestion"
          ]
        },
        "additionalProperties": false,
        "required": [
          "scopes"
        ],
        "properties": {
          "scopes": {
            "type": "array",
            "description": "New set of scopes for which the API key is valid.",
            "minLength": 1,
            "nullable": false,
            "example": [
              "ingestion"
            ],
            "items": {
              "type": "string",
              "enum": [
                "ingestion",
                "graphql",
                "graphql:introspection"
              ]
            }
          }
        }
      },
      "WebhookDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/WebhookSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "url",
              "eventTypes",
              "typeSchemaAliases",
              "collectionAliases"
            ],
            "properties": {
              "url": {
                "type": "string",
                "format": "uri"
              },
              "eventTypes": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "content.ingested",
                    "content.deleted"
                  ]
                }
              },
              "typeSchemaAliases": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "collectionAliases": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "customHeaders": {
                "type": "object",
                "nullable": true,
                "additionalProperties": {
                  "type": "string"
                }
              }
            }
          }
        ]
      },
      "WebhookSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "webhookAlias"
        ],
        "properties": {
          "webhookAlias": {
            "type": "string"
          },
          "description": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CreateWebhookRequest": {
        "type": "object",
        "example": {
          "webhookAlias": "send-on-create",
          "url": "https://example.com/projects",
          "description": "Webhook Description",
          "eventTypes": [
            "content.ingested"
          ],
          "typeSchemaAliases": [],
          "collectionAliases": [],
          "customHeaders": {
            "header-1": "value-1"
          }
        },
        "additionalProperties": false,
        "required": [
          "webhookAlias",
          "url",
          "eventTypes",
          "typeSchemaAliases",
          "collectionAliases",
          "customHeaders"
        ],
        "properties": {
          "webhookAlias": {
            "type": "string",
            "description": "Alias to uniquely identify this webhook.",
            "minLength": 1,
            "nullable": false,
            "example": "send-on-create"
          },
          "url": {
            "type": "string",
            "description": "Description of the webhook.",
            "format": "uri",
            "nullable": false,
            "example": "https://example.com/projects"
          },
          "description": {
            "type": "string",
            "nullable": true,
            "example": "Webhook Description"
          },
          "eventTypes": {
            "type": "array",
            "description": "Only fire the hook if the event is one of these types.",
            "minLength": 1,
            "nullable": false,
            "example": [
              "content.ingested"
            ],
            "items": {
              "type": "string",
              "enum": [
                "content.ingested",
                "content.deleted"
              ]
            }
          },
          "typeSchemaAliases": {
            "type": "array",
            "description": "Only fire the hook if the content is one of these types.",
            "example": [],
            "items": {
              "type": "string"
            }
          },
          "collectionAliases": {
            "type": "array",
            "description": "Only fire the hook if the content is ingested into one of these collections.",
            "example": [],
            "items": {
              "type": "string"
            }
          },
          "customHeaders": {
            "type": "object",
            "description": "Map of custom HTTP headers to send when firing the webhook.",
            "example": {
              "header-1": "value-1"
            },
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "DeleteWebhookRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetWebhookByAliasRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "GetEnvironmentWebhooksResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ConnectionOfWebhookSlimDto"
          },
          {
            "type": "object",
            "additionalProperties": false
          }
        ]
      },
      "ConnectionOfWebhookSlimDto": {
        "type": "object",
        "x-abstract": true,
        "additionalProperties": false,
        "required": [
          "edges"
        ],
        "properties": {
          "edges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EdgeOfWebhookSlimDto"
            }
          },
          "pageInfo": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/PageInfo"
              }
            ]
          },
          "totalCount": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          }
        }
      },
      "EdgeOfWebhookSlimDto": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "cursor"
        ],
        "properties": {
          "cursor": {
            "type": "string"
          },
          "node": {
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/WebhookSlimDto"
              }
            ]
          }
        }
      },
      "GetEnvironmentWebhooksRequest": {
        "type": "object",
        "additionalProperties": false
      },
      "RenameWebhookRequest": {
        "type": "object",
        "example": {
          "newWebhookAlias": "send-on-create-schema-updated"
        },
        "additionalProperties": false,
        "required": [
          "newWebhookAlias"
        ],
        "properties": {
          "newWebhookAlias": {
            "type": "string",
            "description": "New alias for the webhook.",
            "minLength": 1,
            "nullable": false,
            "example": "send-on-create-schema-updated"
          }
        }
      },
      "UpdateWebhookCollectionsRequest": {
        "type": "object",
        "example": {
          "collectionAliases": [
            "content"
          ]
        },
        "additionalProperties": false,
        "properties": {
          "collectionAliases": {
            "type": "array",
            "description": "New set of collections for which the webhook should fire.",
            "nullable": true,
            "example": [
              "content"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateWebhookDescriptionRequest": {
        "type": "object",
        "example": {
          "newDescription": "New description"
        },
        "additionalProperties": false,
        "properties": {
          "newDescription": {
            "type": "string",
            "description": "New description of the webhook.",
            "nullable": true,
            "example": "New description"
          }
        }
      },
      "UpdateWebhookEventTypesRequest": {
        "type": "object",
        "example": {
          "eventTypes": [
            "content.deleted"
          ]
        },
        "additionalProperties": false,
        "required": [
          "eventTypes"
        ],
        "properties": {
          "eventTypes": {
            "type": "array",
            "description": "New set of events on which the webhook should fire.",
            "minLength": 1,
            "nullable": false,
            "example": [
              "content.deleted"
            ],
            "items": {
              "type": "string",
              "enum": [
                "content.ingested",
                "content.deleted"
              ]
            }
          }
        }
      },
      "UpdateWebhookHeadersRequest": {
        "type": "object",
        "example": {
          "newHeaders": {
            "my-header": "my-value"
          }
        },
        "additionalProperties": false,
        "properties": {
          "newHeaders": {
            "type": "object",
            "description": "New map of headers that will be sent with each trigger.",
            "nullable": true,
            "example": {
              "my-header": "my-value"
            },
            "additionalProperties": {
              "type": "string"
            }
          }
        }
      },
      "UpdateWebhookTypeSchemasRequest": {
        "type": "object",
        "example": {
          "typeSchemaAliases": [
            "software"
          ]
        },
        "additionalProperties": false,
        "properties": {
          "typeSchemaAliases": {
            "type": "array",
            "description": "New set of type schema aliases for which the webhook should fire.",
            "nullable": true,
            "example": [
              "software"
            ],
            "items": {
              "type": "string"
            }
          }
        }
      },
      "UpdateWebhookUrlRequest": {
        "type": "object",
        "example": {
          "url": "https://example.com/new-endpoint"
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "properties": {
          "url": {
            "type": "string",
            "description": "New URL for the webhook to hit.",
            "format": "uri",
            "nullable": false,
            "example": "https://example.com/new-endpoint"
          }
        }
      }
    },
    "securitySchemes": {
      "OpenId": {
        "type": "openIdConnect",
        "openIdConnectUrl": "/v1/.well-known/openid-configuration"
      }
    }
  }
}