{
  "openapi": "3.1.2",
  "info": {
    "title": "Elastic Cloud Serverless API",
    "description": "This API enables you to manage Elastic Cloud Serverless Projects.\nYou can create, update, and delete projects, as well as manage project features and usage.\n\nYou can find more information and examples using this API in the [documentation](https://www.elastic.co/docs/deploy-manage/deploy/elastic-cloud/manage-serverless-projects-using-api).\n\n## API principles\n\nThe Elastic Cloud Serverless REST API is built following REST principles:\n\n* Resources (such as projects) are represented as URIs.\n* Standard HTTP response codes and verbs are used (GET, POST, PUT, PATCH and DELETE).\n* API calls are stateless. Every request that you make happens in isolation from other calls and must include all the information necessary to fulfill the request.\n* JSON is the data interchange format.\n\n## Open API Specification\n\nThe Project Management API is documented using the [OpenAPI Specification](https://en.wikipedia.org/wiki/OpenAPI_Specification). The current supported version of the specification is 3.0.\nFor details, check the [API reference](https://www.elastic.co/docs/api/doc/elastic-cloud-serverless/) or download the [OpenAPI Specification](https://www.elastic.co/docs/api/doc/elastic-cloud-serverless.yaml).\nThis specification can be used to generate client SDKs, or on tools that support it, such as the [Swagger Editor](https://editor.swagger.io/).\n\n## Documentation source and versions\n    \nThis documentation is derived from a private repository.\nIt is provided under license [Attribution-NonCommercial-NoDerivatives 4.0 International](https://creativecommons.org/licenses/by-nc-nd/4.0/).\n",
    "version": "0.1.0",
    "x-doc-license": {
      "name": "Attribution-NonCommercial-NoDerivatives 4.0 International",
      "url": "https://creativecommons.org/licenses/by-nc-nd/4.0/"
    },
    "x-feedbackLink": {
      "label": "Feedback",
      "url": "https://github.com/elastic/docs-content/issues/new?assignees=&labels=feedback%2Ccommunity&projects=&template=api-feedback.yaml&title=%5BFeedback%5D%3A+"
    }
  },
  "servers": [
    {
      "url": "https://api.elastic-cloud.com"
    }
  ],
  "paths": {
    "/api/v1/serverless/capabilities": {
      "get": {
        "tags": [
          "capabilities"
        ],
        "summary": "Get organization capabilities",
        "description": "Returns the capabilities that apply to the authenticated user's organization.",
        "operationId": "getOrganizationCapabilities",
        "responses": {
          "200": {
            "description": "The capabilities for the user's organization.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Capabilities"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/serverless/projects/elasticsearch": {
      "get": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Get Elasticsearch projects",
        "description": "Fetches a list of Elasticsearch projects.",
        "operationId": "listElasticsearchProjects",
        "parameters": [
          {
            "name": "traffic_filter",
            "in": "query",
            "description": "Filters the returned list of projects. Only projects associated with the provided traffic_filter will be returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linked",
            "in": "query",
            "description": "Contains a project ID. If specified, the result will be filtered to only those origin projects that are linked to the specified project ID in a cross-project search configuration.",
            "schema": {
              "$ref": "#/components/schemas/ProjectID"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
            "style": "deepObject",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/ProjectTags"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Elasticsearch project list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElasticsearchProjectList"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      },
      "post": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Create an Elasticsearch project",
        "description": "Create an Elasticsearch project. The response will include the created project details, such as the project ID, the credentials to access the project, and the endpoints to access different apps such as Elasticsearch and Kibana. The credentials can be regenerated at any time using the _reset-credentials endpoint.",
        "operationId": "createElasticsearchProject",
        "parameters": [
          {
            "name": "exclude_credentials",
            "in": "query",
            "description": "If true, the username and password fields in the response credentials are set to empty strings and no usable credentials are returned. Credentials can be retrieved later using the _reset-credentials endpoint.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "description": "Configuration of the elasticsearch project to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateElasticsearchProjectRequest"
              },
              "example": {
                "name": "Example project",
                "region_id": "aws-us-east-1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created elasticsearch project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElasticsearchProjectCreated"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          }
        }
      }
    },
    "/api/v1/serverless/projects/elasticsearch/{id}": {
      "get": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Get an Elasticsearch project",
        "operationId": "getElasticsearchProject",
        "responses": {
          "200": {
            "description": "The requested Elasticsearch project",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElasticsearchProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "patch": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Update an Elasticsearch project",
        "description": "Only the fields included in the body of the request will be updated.",
        "operationId": "patchElasticsearchProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The Elasticsearch project patch body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchElasticsearchProjectRequest"
              },
              "example": {
                "name": "Example project"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated Elasticsearch project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ElasticsearchProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "delete": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Delete an Elasticsearch project",
        "operationId": "deleteElasticsearchProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project deletion scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/elasticsearch/{id}/_can-delete": {
      "get": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Get Elasticsearch project delete status",
        "description": "Find issues that would prevent deletion of a project",
        "operationId": "getElasticsearchProjectCanDelete",
        "responses": {
          "200": {
            "description": "The requested delete status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CanDeleteResponse"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/elasticsearch/{id}/_reset-credentials": {
      "post": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Reset the project credentials",
        "description": "Retrieve new project credentials, invalidating the previous ones.",
        "operationId": "resetElasticsearchProjectCredentials",
        "responses": {
          "200": {
            "description": "The new project credentials.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCredentials"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "If-Match",
          "in": "header",
          "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/elasticsearch/{id}/_resume": {
      "post": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Resume Elasticsearch project",
        "description": "Resume a previously suspended Elasticsearch project. Projects can be automatically suspended after their trial period has expired.",
        "operationId": "resumeElasticsearchProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project resumption scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/elasticsearch/{id}/link-candidates": {
      "get": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Get Elasticsearch project link candidates",
        "description": "The response contains the list of projects which can be linked to the specified Elasticsearch project in a cross-project search configuration.",
        "operationId": "getElasticsearchProjectLinkCandidates",
        "responses": {
          "200": {
            "description": "The requested link candidate projects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedCandidatesList"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "types",
          "in": "query",
          "description": "One or more types of projects to return as link candidates.",
          "schema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectType"
            }
          }
        },
        {
          "name": "csp",
          "in": "query",
          "description": "The Cloud Service Provider to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "region",
          "in": "query",
          "description": "The region to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "name",
          "in": "query",
          "description": "The project name to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "alias",
          "in": "query",
          "description": "The project alias to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "tags",
          "in": "query",
          "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
          "style": "deepObject",
          "explode": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectTags"
          },
          "example": {
            "tags[environment]": "production",
            "tags[team]": "team-a"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/elasticsearch/{id}/roles": {
      "get": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Get roles for an Elasticsearch project",
        "description": "Retrieve the custom roles defined for an Elasticsearch project.",
        "operationId": "getElasticsearchProjectRoles",
        "responses": {
          "200": {
            "description": "The requested roles",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectRolesByProjectID"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/elasticsearch/{id}/status": {
      "get": {
        "tags": [
          "elasticsearch projects"
        ],
        "summary": "Get the status of an Elasticsearch project",
        "description": "The response indicates whether the project is initialized and ready to be used. The phase will change from \"initializing\" to \"initialized\" when the project is ready.",
        "operationId": "getElasticsearchProjectStatus",
        "responses": {
          "200": {
            "description": "The requested Elasticsearch project status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatus"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/observability": {
      "get": {
        "tags": [
          "observability projects"
        ],
        "summary": "Get Observability projects",
        "description": "Fetches a list of Observability projects.",
        "operationId": "listObservabilityProjects",
        "parameters": [
          {
            "name": "traffic_filter",
            "in": "query",
            "description": "traffic filters associated with this project",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linked",
            "in": "query",
            "description": "Contains a project ID. If specified, the result will be filtered to only those origin projects that are linked to the specified project ID in a cross-project search configuration.",
            "schema": {
              "$ref": "#/components/schemas/ProjectID"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
            "style": "deepObject",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/ProjectTags"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Observability project list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObservabilityProjectList"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      },
      "post": {
        "tags": [
          "observability projects"
        ],
        "summary": "Create an observability project",
        "description": "The response will include the created project details, such as the project ID, the credentials to access the project, and the endpoints to access different apps such as Elasticsearch, Kibana and APM. The credentials can be regenerated at any time using the _reset-credentials endpoint.",
        "operationId": "createObservabilityProject",
        "parameters": [
          {
            "name": "exclude_credentials",
            "in": "query",
            "description": "If true, the username and password fields in the response credentials are set to empty strings and no usable credentials are returned. Credentials can be retrieved later using the _reset-credentials endpoint.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "description": "Configuration of the observability project to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateObservabilityProjectRequest"
              },
              "example": {
                "name": "Example project",
                "region_id": "aws-us-east-1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created observability project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObservabilityProjectCreated"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          }
        }
      }
    },
    "/api/v1/serverless/projects/observability/{id}": {
      "get": {
        "tags": [
          "observability projects"
        ],
        "summary": "Get an Observability project",
        "operationId": "getObservabilityProject",
        "responses": {
          "200": {
            "description": "The requested Observability project",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObservabilityProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "patch": {
        "tags": [
          "observability projects"
        ],
        "summary": "Update an Observability project",
        "description": "Only the fields included in the body of the request will be updated.",
        "operationId": "patchObservabilityProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The patched Observability project",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchObservabilityProjectRequest"
              },
              "example": {
                "name": "Example project"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated Observability project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ObservabilityProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "delete": {
        "tags": [
          "observability projects"
        ],
        "summary": "Delete an Observability project",
        "operationId": "deleteObservabilityProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project deletion scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/observability/{id}/_can-delete": {
      "get": {
        "tags": [
          "observability projects"
        ],
        "summary": "Get Observability project delete status",
        "description": "Find issues that would prevent deletion of a project",
        "operationId": "getObservabilityProjectCanDelete",
        "responses": {
          "200": {
            "description": "The requested delete status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CanDeleteResponse"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/observability/{id}/_reset-credentials": {
      "post": {
        "tags": [
          "observability projects"
        ],
        "summary": "Reset the project credentials",
        "description": "Retrieve new project credentials, invalidating the previous ones.",
        "operationId": "resetObservabilityProjectCredentials",
        "responses": {
          "200": {
            "description": "The new project credentials.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCredentials"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "If-Match",
          "in": "header",
          "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/observability/{id}/_resume": {
      "post": {
        "tags": [
          "observability projects"
        ],
        "summary": "Resume Observability project",
        "description": "Resume a previously suspended Observability project. Projects can be automatically suspended after their trial period has expired.",
        "operationId": "resumeObservabilityProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project resumption scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/observability/{id}/link-candidates": {
      "get": {
        "tags": [
          "observability projects"
        ],
        "summary": "Get Observability project link candidates",
        "description": "The response contains the list of projects which can be linked to the specified Observability project in a cross-project search configuration.",
        "operationId": "getObservabilityProjectLinkCandidates",
        "responses": {
          "200": {
            "description": "The requested link candidate projects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedCandidatesList"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "types",
          "in": "query",
          "description": "One or more types of projects to return as link candidates.",
          "schema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectType"
            }
          }
        },
        {
          "name": "csp",
          "in": "query",
          "description": "The Cloud Service Provider to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "region",
          "in": "query",
          "description": "The region to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "name",
          "in": "query",
          "description": "The project name to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "alias",
          "in": "query",
          "description": "The project alias to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "tags",
          "in": "query",
          "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
          "style": "deepObject",
          "explode": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectTags"
          },
          "example": {
            "tags[environment]": "production",
            "tags[team]": "team-a"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/observability/{id}/roles": {
      "get": {
        "tags": [
          "observability projects"
        ],
        "summary": "Get roles for an Observability project",
        "description": "Retrieve the custom roles defined for an Observability project.",
        "operationId": "getObservabilityProjectRoles",
        "responses": {
          "200": {
            "description": "The requested roles",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectRolesByProjectID"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/observability/{id}/status": {
      "get": {
        "tags": [
          "observability projects"
        ],
        "summary": "Get the status of an Observability project",
        "description": "The response indicates whether the project is initialized and ready to be used. The phase will change from \"initializing\" to \"initialized\" when the project is ready.",
        "operationId": "getObservabilityProjectStatus",
        "responses": {
          "200": {
            "description": "The requested Observability project status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatus"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/security": {
      "get": {
        "tags": [
          "security projects"
        ],
        "summary": "Get Security projects",
        "description": "Fetches a list of Security projects.",
        "operationId": "listSecurityProjects",
        "parameters": [
          {
            "name": "traffic_filter",
            "in": "query",
            "description": "traffic filters associated with this project",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linked",
            "in": "query",
            "description": "Contains a project ID. If specified, the result will be filtered to only those origin projects that are linked to the specified project ID in a cross-project search configuration.",
            "schema": {
              "$ref": "#/components/schemas/ProjectID"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
            "style": "deepObject",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/ProjectTags"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Security project list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityProjectList"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      },
      "post": {
        "tags": [
          "security projects"
        ],
        "summary": "Create a security project",
        "description": "The response will include the created project details, such as the project ID, the credentials to access the project, and the endpoints to access different apps such as Elasticsearch and Kibana. The credentials can be regenerated at any time using the _reset-credentials endpoint.",
        "operationId": "createSecurityProject",
        "parameters": [
          {
            "name": "exclude_credentials",
            "in": "query",
            "description": "If true, the username and password fields in the response credentials are set to empty strings and no usable credentials are returned. Credentials can be retrieved later using the _reset-credentials endpoint.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "description": "Configuration of the security project to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSecurityProjectRequest"
              },
              "example": {
                "name": "Example project",
                "region_id": "aws-us-east-1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created security project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityProjectCreated"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          }
        }
      }
    },
    "/api/v1/serverless/projects/security/{id}": {
      "get": {
        "tags": [
          "security projects"
        ],
        "summary": "Get a Security project",
        "operationId": "getSecurityProject",
        "responses": {
          "200": {
            "description": "The requested Security project",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "patch": {
        "tags": [
          "security projects"
        ],
        "summary": "Update a Security project",
        "description": "Only the fields included in the body of the request will be updated.",
        "operationId": "patchSecurityProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The patched Security project",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchSecurityProjectRequest"
              },
              "example": {
                "name": "Example project"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated Security project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "delete": {
        "tags": [
          "security projects"
        ],
        "summary": "Delete a Security project",
        "operationId": "deleteSecurityProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project deletion scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/security/{id}/_can-delete": {
      "get": {
        "tags": [
          "security projects"
        ],
        "summary": "Get Security project delete status",
        "description": "Find issues that would prevent deletion of a project",
        "operationId": "getSecurityProjectCanDelete",
        "responses": {
          "200": {
            "description": "The requested delete status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CanDeleteResponse"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/security/{id}/_reset-credentials": {
      "post": {
        "tags": [
          "security projects"
        ],
        "summary": "Reset the project credentials",
        "description": "Retrieve new project credentials, invalidating the previous ones.",
        "operationId": "resetSecurityProjectCredentials",
        "responses": {
          "200": {
            "description": "The new project credentials.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCredentials"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "If-Match",
          "in": "header",
          "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/security/{id}/_resume": {
      "post": {
        "tags": [
          "security projects"
        ],
        "summary": "Resume Security project",
        "description": "Resume a previously suspended Security project. Projects can be automatically suspended after their trial period has expired.",
        "operationId": "resumeSecurityProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project resumption scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/security/{id}/link-candidates": {
      "get": {
        "tags": [
          "security projects"
        ],
        "summary": "Get Security project link candidates",
        "description": "The response contains the list of projects which can be linked to the specified Security project in a cross-project search configuration.",
        "operationId": "getSecurityProjectLinkCandidates",
        "responses": {
          "200": {
            "description": "The requested link candidate projects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedCandidatesList"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "types",
          "in": "query",
          "description": "One or more types of projects to return as link candidates.",
          "schema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectType"
            }
          }
        },
        {
          "name": "csp",
          "in": "query",
          "description": "The Cloud Service Provider to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "region",
          "in": "query",
          "description": "The region to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "name",
          "in": "query",
          "description": "The project name to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "alias",
          "in": "query",
          "description": "The project alias to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "tags",
          "in": "query",
          "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
          "style": "deepObject",
          "explode": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectTags"
          },
          "example": {
            "tags[environment]": "production",
            "tags[team]": "team-a"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/security/{id}/roles": {
      "get": {
        "tags": [
          "security projects"
        ],
        "summary": "Get roles for a Security project",
        "description": "Retrieve the custom roles defined for a Security project.",
        "operationId": "getSecurityProjectRoles",
        "responses": {
          "200": {
            "description": "The requested roles",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectRolesByProjectID"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/security/{id}/status": {
      "get": {
        "tags": [
          "security projects"
        ],
        "summary": "Get the status of a Security project",
        "description": "The response indicates whether the project is initialized and ready to be used. The phase will change from \"initializing\" to \"initialized\" when the project is ready.",
        "operationId": "getSecurityProjectStatus",
        "responses": {
          "200": {
            "description": "The requested Security project status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatus"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/vectordb": {
      "get": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Get VectorDB projects",
        "description": "Fetches a list of VectorDB projects.",
        "operationId": "listVectorDBProjects",
        "parameters": [
          {
            "name": "traffic_filter",
            "in": "query",
            "description": "Filters the returned list of projects. Only projects associated with the provided traffic_filter will be returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linked",
            "in": "query",
            "description": "Contains a project ID. If specified, the result will be filtered to only those origin projects that are linked to the specified project ID in a cross-project search configuration.",
            "schema": {
              "$ref": "#/components/schemas/ProjectID"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
            "style": "deepObject",
            "explode": true,
            "schema": {
              "$ref": "#/components/schemas/ProjectTags"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The VectorDB project list",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorDBProjectList"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      },
      "post": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Create a VectorDB project",
        "description": "Create a VectorDB project. The response will include the created project details, such as the project ID, the credentials to access the project, and the endpoints to access different apps. The credentials can be regenerated at any time using the _reset-credentials endpoint.",
        "operationId": "createVectorDBProject",
        "parameters": [
          {
            "name": "exclude_credentials",
            "in": "query",
            "description": "If true, the username and password fields in the response credentials are set to empty strings and no usable credentials are returned. Credentials can be retrieved later using the _reset-credentials endpoint.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "description": "Configuration of the VectorDB project to create.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVectorDBProjectRequest"
              },
              "example": {
                "name": "Example project",
                "region_id": "aws-us-east-1"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "The created VectorDB project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorDBProjectCreated"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "422": {
            "$ref": "#/components/responses/UnprocessableEntity"
          }
        }
      }
    },
    "/api/v1/serverless/projects/vectordb/{id}": {
      "get": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Get a VectorDB project",
        "operationId": "getVectorDBProject",
        "responses": {
          "200": {
            "description": "The requested VectorDB project",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorDBProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "patch": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Update a VectorDB project",
        "description": "Only the fields included in the body of the request will be updated.",
        "operationId": "patchVectorDBProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The VectorDB project patch body",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchVectorDBProjectRequest"
              },
              "example": {
                "name": "Example project"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The updated VectorDB project.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VectorDBProject"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "delete": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Delete a VectorDB project",
        "operationId": "deleteVectorDBProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project deletion scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/vectordb/{id}/_can-delete": {
      "get": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Get VectorDB project delete status",
        "description": "Find issues that would prevent deletion of a project",
        "operationId": "getVectorDBProjectCanDelete",
        "responses": {
          "200": {
            "description": "The requested delete status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CanDeleteResponse"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/vectordb/{id}/_reset-credentials": {
      "post": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Reset the project credentials",
        "description": "Retrieve new project credentials, invalidating the previous ones.",
        "operationId": "resetVectorDBProjectCredentials",
        "responses": {
          "200": {
            "description": "The new project credentials.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectCredentials"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "If-Match",
          "in": "header",
          "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates",
          "schema": {
            "type": "string"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/vectordb/{id}/_resume": {
      "post": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Resume VectorDB project",
        "description": "Resume a previously suspended VectorDB project. Projects can be automatically suspended after their trial period has expired.",
        "operationId": "resumeVectorDBProject",
        "parameters": [
          {
            "name": "If-Match",
            "in": "header",
            "description": "ETag value fetched in a previous GET project request. Used to prevent simultaneous updates.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Project resumption scheduled.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "412": {
            "$ref": "#/components/responses/PreconditionFailed"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/vectordb/{id}/link-candidates": {
      "get": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Get VectorDB project link candidates",
        "description": "The response contains the list of projects which can be linked to the specified VectorDB project in a cross-project search configuration.",
        "operationId": "getVectorDBProjectLinkCandidates",
        "responses": {
          "200": {
            "description": "The requested link candidate projects",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LinkedCandidatesList"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        },
        {
          "name": "types",
          "in": "query",
          "description": "One or more types of projects to return as link candidates.",
          "schema": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectType"
            }
          }
        },
        {
          "name": "csp",
          "in": "query",
          "description": "The Cloud Service Provider to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "region",
          "in": "query",
          "description": "The region to filter the link candidate projects by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "name",
          "in": "query",
          "description": "The project name to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "alias",
          "in": "query",
          "description": "The project alias to filter the link candidates by.",
          "schema": {
            "type": "string"
          }
        },
        {
          "name": "tags",
          "in": "query",
          "description": "If specified, the result will be filtered to only those projects that have the specified tags and corresponding values.",
          "style": "deepObject",
          "explode": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectTags"
          },
          "example": {
            "tags[environment]": "production",
            "tags[team]": "team-a"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/vectordb/{id}/roles": {
      "get": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Get roles for a VectorDB project",
        "description": "Retrieve the custom roles defined for a VectorDB project.",
        "operationId": "getVectorDBProjectRoles",
        "responses": {
          "200": {
            "description": "The requested roles",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectRolesByProjectID"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/projects/vectordb/{id}/status": {
      "get": {
        "tags": [
          "vectordb projects"
        ],
        "summary": "Get the status of a VectorDB project",
        "description": "The response indicates whether the project is initialized and ready to be used. The phase will change from \\\"initializing\\\" to \\\"initialized\\\" when the project is ready.",
        "operationId": "getVectorDBProjectStatus",
        "responses": {
          "200": {
            "description": "The requested VectorDB project status",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectStatus"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The ID of the project",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/ProjectID"
          }
        }
      ]
    },
    "/api/v1/serverless/regions": {
      "get": {
        "tags": [
          "regions"
        ],
        "summary": "Get regions",
        "description": "Retrieve the available cloud service provider regions where a project can be created.",
        "operationId": "listRegions",
        "responses": {
          "200": {
            "description": "The regions list",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Region"
                  }
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          }
        }
      }
    },
    "/api/v1/serverless/regions/{id}": {
      "get": {
        "tags": [
          "regions"
        ],
        "summary": "Get a region",
        "description": "Retrieve the details of a cloud service provider region.",
        "operationId": "getRegion",
        "responses": {
          "200": {
            "description": "The requested region",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Region"
                }
              }
            }
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "ID of the region",
          "required": true,
          "schema": {
            "$ref": "#/components/schemas/RegionID"
          }
        }
      ]
    },
    "/api/v1/serverless/traffic-filters": {
      "get": {
        "tags": [
          "traffic filters"
        ],
        "summary": "List traffic filters",
        "description": "List all of the traffic filters.",
        "operationId": "listTrafficFilters",
        "parameters": [
          {
            "name": "include_by_default",
            "in": "query",
            "description": "Retrieves a list of resources that have include_by_default set or not set",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "region",
            "in": "query",
            "description": "If provided limits the traffic filters to that region only.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The collection of traffic filters were successfully returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrafficFilterList"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      },
      "post": {
        "tags": [
          "traffic filters"
        ],
        "summary": "Create a traffic filter",
        "description": "Creates a traffic filter that consists of a set of rules.\n\nSee [Private connectivity](https://www.elastic.co/docs/deploy-manage/security/private-connectivity)\nfor setup guides and regional service names.\n\n### AWS PrivateLink (`type: vpce`)\n\nEach rule must include:\n\n- `source` — the VPC endpoint ID (format: `vpce-` followed by 17 lowercase hex characters).\n\nDo not set `azure_endpoint_name` or `azure_endpoint_guid` on AWS rules.\n\n### Azure Private Link (`type: private_endpoint`)\n\nEach rule must include:\n\n- `azure_endpoint_name` — the Azure Private Endpoint resource name (2–80 characters).\n- `azure_endpoint_guid` — the PE **resource GUID** (`properties.resourceGuid`), a lowercase UUID.\n  This is not the ARM resource ID.\n\nDo not set `source` on Azure rules.\n\n### GCP Private Service Connect (`type: psc_endpoint`)\n\nEach rule must include:\n\n- `source` — the decimal PSC connection ID reported by the consumer forwarding rule.\n\nDo not set `azure_endpoint_name` or `azure_endpoint_guid` on GCP rules. GCP PSC\nconnections are accepted automatically by the service attachment, so creating this\ntraffic filter does not trigger a cloud approval or resolution operation.\n",
        "operationId": "createTrafficFilter",
        "requestBody": {
          "$ref": "#/components/requestBodies/CreateTrafficFilterRequestBody"
        },
        "responses": {
          "201": {
            "description": "The traffic filter definition is valid and the creation has started.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrafficFilterInfo"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/api/v1/serverless/traffic-filters/metadata": {
      "get": {
        "tags": [
          "traffic filters"
        ],
        "summary": "List PrivateLink region metadata",
        "description": "Returns region-specific PrivateLink connectivity metadata. Optionally filter by region or csp. If no matches are found, returns 200 with an empty regions array.\n",
        "operationId": "getTrafficFilterMetadata",
        "parameters": [
          {
            "name": "region",
            "in": "query",
            "description": "Filter metadata to a specific region (e.g. aws-eu-west-1, azure-australiaeast).",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "csp",
            "in": "query",
            "description": "Filter metadata to a specific cloud service provider (aws, azure, gcp).",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Metadata returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrafficFilterMetadata"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      }
    },
    "/api/v1/serverless/traffic-filters/{id}": {
      "get": {
        "tags": [
          "traffic filters"
        ],
        "summary": "Retrieves the traffic filter by ID.",
        "description": "Retrieves a list of resources that are associated to the specified traffic filter.",
        "operationId": "getTrafficFilter",
        "responses": {
          "200": {
            "description": "The container for a set of traffic filter rules.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrafficFilterInfo"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      },
      "patch": {
        "tags": [
          "traffic filters"
        ],
        "summary": "Updates a traffic filter",
        "description": "Updates the traffic filter with the definition.",
        "operationId": "patchTrafficFilter",
        "requestBody": {
          "$ref": "#/components/requestBodies/PatchTrafficFilterBody"
        },
        "responses": {
          "200": {
            "description": "The traffic filter definition was valid and the update has started.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TrafficFilterInfo"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        },
        "x-doc": {
          "tag": "traffic filters"
        }
      },
      "delete": {
        "tags": [
          "traffic filters"
        ],
        "summary": "Delete a traffic filter",
        "description": "Deletes the traffic filter by ID.",
        "operationId": "deleteTrafficFilter",
        "responses": {
          "204": {
            "description": "The traffic filter was successfully deleted.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          }
        }
      },
      "parameters": [
        {
          "name": "id",
          "in": "path",
          "description": "The traffic filter ID.",
          "required": true,
          "schema": {
            "type": "string"
          }
        }
      ]
    }
  },
  "components": {
    "schemas": {
      "CanDeleteResponse": {
        "required": [
          "linked_projects",
          "monitored_projects",
          "can_be_deleted"
        ],
        "type": "object",
        "properties": {
          "linked_projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DependentProjectSummary"
            },
            "description": "Details about linked origins that affect deletion."
          },
          "can_be_deleted": {
            "type": "boolean",
            "description": "Indicates whether the project can be deleted."
          }
        },
        "description": "Container for deletion eligibility details."
      },
      "Capabilities": {
        "required": [
          "cross_project_search",
          "quotas"
        ],
        "type": "object",
        "properties": {
          "cross_project_search": {
            "$ref": "#/components/schemas/CrossProjectSearchCapabilities"
          },
          "quotas": {
            "$ref": "#/components/schemas/Quotas"
          }
        },
        "description": "Capabilities that apply to the user's organization."
      },
      "CloudID": {
        "type": "string",
        "description": "The cloud ID, an encoded string that provides other Elastic services with the necessary information to connect to this Elasticsearch and Kibana.",
        "example": "my_project:LmF3cy5lbGFzdG"
      },
      "CommonProjectFields": {
        "required": [
          "id",
          "name",
          "alias",
          "region_id",
          "metadata",
          "cloud_id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/ProjectID"
          },
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAliasWithSuffix"
          },
          "region_id": {
            "$ref": "#/components/schemas/RegionID"
          },
          "metadata": {
            "$ref": "#/components/schemas/ProjectMetadata"
          },
          "cloud_id": {
            "$ref": "#/components/schemas/CloudID"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/TrafficFilters"
          },
          "linked": {
            "$ref": "#/components/schemas/LinkConfiguration"
          }
        },
        "description": "Common fields of serverless projects."
      },
      "CreateElasticsearchProjectRequest": {
        "required": [
          "name",
          "region_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "region_id": {
            "$ref": "#/components/schemas/RegionID"
          },
          "optimized_for": {
            "$ref": "#/components/schemas/ElasticsearchOptimizedFor"
          },
          "search_lake": {
            "$ref": "#/components/schemas/ElasticsearchSearchLake"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/TrafficFilters"
          },
          "linked": {
            "$ref": "#/components/schemas/CreateLinkedRequest"
          },
          "metadata": {
            "$ref": "#/components/schemas/ProjectMetadataRequest"
          }
        },
        "additionalProperties": false,
        "description": "A request to create an Elasticsearch serverless project."
      },
      "CreateLinkedProjectRequest": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ProjectType"
          }
        },
        "additionalProperties": false,
        "description": "Details of the linked project"
      },
      "CreateLinkedRequest": {
        "required": [
          "projects"
        ],
        "type": "object",
        "properties": {
          "projects": {
            "minProperties": 1,
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CreateLinkedProjectRequest"
            }
          }
        },
        "additionalProperties": false,
        "description": "Configuration for linked projects associated with this project"
      },
      "CreateObservabilityProjectRequest": {
        "required": [
          "name",
          "region_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "region_id": {
            "$ref": "#/components/schemas/RegionID"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/TrafficFilters"
          },
          "product_tier": {
            "$ref": "#/components/schemas/ObservabilityProjectProductTier"
          },
          "linked": {
            "$ref": "#/components/schemas/CreateLinkedRequest"
          },
          "metadata": {
            "$ref": "#/components/schemas/ProjectMetadataRequest"
          }
        },
        "additionalProperties": false,
        "description": "A request to create an Observability project."
      },
      "CreateSecurityProjectRequest": {
        "required": [
          "name",
          "region_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "region_id": {
            "$ref": "#/components/schemas/RegionID"
          },
          "admin_features_package": {
            "$ref": "#/components/schemas/SecurityAdminFeaturesPackage"
          },
          "product_types": {
            "maxItems": 3,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityProductType"
            },
            "default": [
              {
                "product_line": "security",
                "product_tier": "complete"
              },
              {
                "product_line": "cloud",
                "product_tier": "complete"
              },
              {
                "product_line": "endpoint",
                "product_tier": "complete"
              }
            ]
          },
          "search_lake": {
            "$ref": "#/components/schemas/SecuritySearchLake"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/TrafficFilters"
          },
          "linked": {
            "$ref": "#/components/schemas/CreateLinkedRequest"
          },
          "metadata": {
            "$ref": "#/components/schemas/ProjectMetadataRequest"
          }
        },
        "additionalProperties": false,
        "description": "A request to create a Security project."
      },
      "CreateVectorDBProjectRequest": {
        "required": [
          "name",
          "region_id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "region_id": {
            "$ref": "#/components/schemas/RegionID"
          },
          "search_lake": {
            "$ref": "#/components/schemas/VectorDBSearchLake"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/TrafficFilters"
          },
          "linked": {
            "$ref": "#/components/schemas/CreateLinkedRequest"
          },
          "metadata": {
            "$ref": "#/components/schemas/ProjectMetadataRequest"
          }
        },
        "additionalProperties": false,
        "description": "A request to create a VectorDB serverless project."
      },
      "CrossProjectSearchCapabilities": {
        "required": [
          "max_linked_projects"
        ],
        "type": "object",
        "properties": {
          "max_linked_projects": {
            "type": "integer",
            "description": "The maximum number of projects that can be linked to an origin project.",
            "example": 100
          }
        },
        "description": "Cross-project search capabilities of the organization."
      },
      "DataRetention": {
        "type": [
          "null",
          "object"
        ],
        "properties": {
          "max_retention_days": {
            "maximum": 3681,
            "minimum": 7,
            "type": [
              "null",
              "integer"
            ],
            "description": "Maximum number of days allowed for retaining data in Elasticsearch data streams. Can be set to \"null\" for unlimited. A default of 396 will be applied if no value is specified on project creation."
          },
          "default_retention_days": {
            "maximum": 3681,
            "minimum": 7,
            "type": [
              "null",
              "integer"
            ],
            "description": "Default number of days during which data remains available in Elasticsearch data streams. Can be set to \"null\" for unlimited. A default of 396 will be applied if no value is specified on project creation."
          }
        },
        "description": "Configuration to control the data retention in Elasticsearch data streams."
      },
      "DependentProjectSummary": {
        "required": [
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/ProjectID"
          },
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "type": {
            "$ref": "#/components/schemas/ProjectType"
          }
        },
        "description": "Summary details of a project."
      },
      "ElasticsearchOptimizedFor": {
        "enum": [
          "general_purpose",
          "vector"
        ],
        "type": "string",
        "description": "The purpose for which the hardware of this elasticsearch project is optimized. Also known as the Elasticsearch project subtype.\n\n- The `general_purpose` option is suitable for most search use cases. For example, it is the right profile for full-text search, sparse vectors, and dense vectors that use compression such as BBQ. It is used by default when you create projects from the UI.\n- The `vector` option is recommended only for uncompressed dense vectors (`dense_vector` fields with `int4` or `int8` quantization strategies) and high dimensionality. Refer to documentation about billing dimensions for the impact to virtual compute unit (VCU) consumption.\n",
        "externalDocs": {
          "description": "Elasticsearch Serverless billing dimensions",
          "url": "https://www.elastic.co/docs/deploy-manage/cloud-organization/billing/elasticsearch-billing-dimensions"
        },
        "example": "general_purpose"
      },
      "ElasticsearchProject": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CommonProjectFields"
          },
          {
            "$ref": "#/components/schemas/ElasticsearchProjectFields"
          }
        ],
        "description": "An Elasticsearch serverless project."
      },
      "ElasticsearchProjectCreated": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ElasticsearchProject"
          },
          {
            "required": [
              "credentials"
            ],
            "type": "object",
            "properties": {
              "credentials": {
                "$ref": "#/components/schemas/ProjectCredentials"
              }
            }
          }
        ],
        "description": "The created Elasticsearch project along with credentials to access Elasticsearch."
      },
      "ElasticsearchProjectEndpoints": {
        "required": [
          "elasticsearch",
          "kibana"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The endpoint to access elasticsearch.",
            "example": "https://my-project-alias-df6c6d.es.us-east-1.aws.elastic.cloud"
          },
          "kibana": {
            "type": "string",
            "description": "The endpoint to access kibana.",
            "example": "https://my-project-alias-df6c6d.kb.us-east-1.aws.elastic.cloud"
          }
        },
        "description": "The endpoints to access the different apps of the project."
      },
      "ElasticsearchProjectFields": {
        "required": [
          "type",
          "optimized_for",
          "endpoints"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "elasticsearch"
            ],
            "type": "string",
            "description": "the type of the project"
          },
          "optimized_for": {
            "$ref": "#/components/schemas/ElasticsearchOptimizedFor"
          },
          "search_lake": {
            "$ref": "#/components/schemas/ElasticsearchSearchLake"
          },
          "endpoints": {
            "$ref": "#/components/schemas/ElasticsearchProjectEndpoints"
          },
          "private_endpoints": {
            "$ref": "#/components/schemas/ElasticsearchProjectPrivateEndpoints"
          }
        },
        "description": "Specific fields of an Elasticsearch serverless project."
      },
      "ElasticsearchProjectList": {
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "next_page": {
            "type": "string",
            "description": "A token to fetch the next page.",
            "example": "YyMzY1MDQiLCJtYXgiOiJGRiJ9fV0=",
            "deprecated": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ElasticsearchProject"
            },
            "description": "The actual projects."
          }
        },
        "description": "A paginated list of serverless elasticsearch projects."
      },
      "ElasticsearchProjectPrivateEndpoints": {
        "required": [
          "elasticsearch",
          "kibana"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access elasticsearch.",
            "example": "https://my-project-alias-df6c6d.es.private.us-east-1.aws.elastic.cloud"
          },
          "kibana": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access kibana.",
            "example": "https://my-project-alias-df6c6d.kb.private.us-east-1.aws.elastic.cloud"
          }
        },
        "description": "Private endpoints (URLs) for Elasticsearch projects when PrivateLink is enabled."
      },
      "ElasticsearchSearchLake": {
        "type": "object",
        "properties": {
          "search_power": {
            "maximum": 3000,
            "minimum": 28,
            "type": "integer",
            "description": "Controls how fast searches are against your project data. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. You can either increase the performance of searches on cached data by adding replicas, or reduce the quantity of cached data by a static factor to save on costs.",
            "example": 100
          },
          "boost_window": {
            "maximum": 180,
            "minimum": 1,
            "type": "integer",
            "description": "Determines how much data can benefit from faster search. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. The system dynamically adjusts the cache allocated to your project based on how much data you ingest during the period defined by your Search Boost Window.",
            "example": 100
          },
          "min_search_vcu": {
            "maximum": 2500,
            "minimum": 2,
            "type": "integer",
            "description": "The minimum number of search VCUs allocated to your project."
          }
        },
        "description": "Configuration for entire set of capabilities that make the data searchable in Elasticsearch."
      },
      "ErrorResponse": {
        "required": [
          "message",
          "code"
        ],
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "A human-readable message of the error.",
            "example": "Explicative error message"
          },
          "code": {
            "type": "string",
            "description": "An identifier for this type of error.",
            "example": "code.error"
          }
        },
        "description": "An error response returned by the API."
      },
      "LinkConfiguration": {
        "required": [
          "projects"
        ],
        "type": "object",
        "properties": {
          "projects": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/LinkedProject"
            }
          }
        },
        "additionalProperties": false,
        "description": "Configuration for projects linked to this project"
      },
      "LinkedCandidateProject": {
        "required": [
          "id",
          "name",
          "alias",
          "type",
          "csp",
          "region",
          "tags",
          "linked"
        ],
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/ProjectID"
          },
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "type": {
            "$ref": "#/components/schemas/ProjectType"
          },
          "csp": {
            "type": "string"
          },
          "region": {
            "$ref": "#/components/schemas/RegionID"
          },
          "tags": {
            "$ref": "#/components/schemas/ProjectTags"
          },
          "linked": {
            "type": "boolean",
            "description": "Indicates whether the project is already linked to the requesting project."
          }
        }
      },
      "LinkedCandidatesList": {
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LinkedCandidateProject"
            },
            "description": "The linked candidates."
          }
        },
        "description": "A list of all projects that can be linked for a project."
      },
      "LinkedProject": {
        "required": [
          "status",
          "type"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/LinkedProjectStatus"
          },
          "type": {
            "$ref": "#/components/schemas/ProjectType"
          }
        }
      },
      "LinkedProjectStatus": {
        "enum": [
          "enabled",
          "suspended",
          "deleted"
        ],
        "type": "string",
        "description": "The state of the linked project."
      },
      "MultiErrorResponse": {
        "required": [
          "errors"
        ],
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        },
        "description": "A non-empty list of errors."
      },
      "ObservabilityProject": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CommonProjectFields"
          },
          {
            "$ref": "#/components/schemas/ObservabilityProjectFields"
          }
        ],
        "description": "An Observability project."
      },
      "ObservabilityProjectCreated": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ObservabilityProject"
          },
          {
            "required": [
              "credentials"
            ],
            "type": "object",
            "properties": {
              "credentials": {
                "$ref": "#/components/schemas/ProjectCredentials"
              }
            }
          }
        ],
        "description": "The created Observability project along with credentials to access Elasticsearch."
      },
      "ObservabilityProjectEndpoints": {
        "required": [
          "elasticsearch",
          "kibana",
          "apm",
          "ingest"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The endpoint to access elasticsearch."
          },
          "kibana": {
            "type": "string",
            "description": "The endpoint to access kibana."
          },
          "apm": {
            "type": "string",
            "description": "The endpoint to access apm."
          },
          "ingest": {
            "type": "string",
            "description": "The endpoint to access the Managed OTLP Endpoint."
          }
        },
        "description": "The endpoints to access the different apps of the project."
      },
      "ObservabilityProjectFields": {
        "required": [
          "type",
          "endpoints"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "observability"
            ],
            "type": "string",
            "description": "the type of the project"
          },
          "product_tier": {
            "$ref": "#/components/schemas/ObservabilityProjectProductTier"
          },
          "endpoints": {
            "$ref": "#/components/schemas/ObservabilityProjectEndpoints"
          },
          "private_endpoints": {
            "$ref": "#/components/schemas/ObservabilityProjectPrivateEndpoints"
          }
        },
        "description": "Specific fields of an Observability project."
      },
      "ObservabilityProjectList": {
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "next_page": {
            "type": "string",
            "description": "A token to fetch the next page.",
            "deprecated": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ObservabilityProject"
            },
            "description": "The actual projects."
          }
        },
        "description": "A paginated list of serverless Observability projects."
      },
      "ObservabilityProjectPrivateEndpoints": {
        "required": [
          "elasticsearch",
          "kibana",
          "apm",
          "ingest"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access elasticsearch.",
            "example": "https://my-project-alias-df6c6d.es.private.us-east-1.aws.elastic.cloud"
          },
          "kibana": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access kibana.",
            "example": "https://my-project-alias-df6c6d.kb.private.us-east-1.aws.elastic.cloud"
          },
          "apm": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access APM.",
            "example": "https://my-project-alias-df6c6d.apm.private.us-east-1.aws.elastic.cloud"
          },
          "ingest": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access the Managed OTLP Endpoint.",
            "example": "https://my-project-alias-df6c6d.ingest.private.us-east-1.aws.elastic.cloud"
          }
        },
        "description": "Private endpoints (URLs) for Observability projects when PrivateLink is enabled."
      },
      "ObservabilityProjectProductTier": {
        "enum": [
          "complete",
          "logs_essentials"
        ],
        "type": "string",
        "description": "the tier of the observability project. The default is \"complete\" when not specified at creation time.",
        "x-enumNames": [
          "ObservabilityProjectProductTierComplete",
          "ObservabilityProjectProductTierLogsEssentials"
        ]
      },
      "OptionalElasticsearchSearchLake": {
        "type": [
          "null",
          "object"
        ],
        "properties": {
          "search_power": {
            "maximum": 3000,
            "minimum": 28,
            "type": [
              "null",
              "integer"
            ],
            "description": "Controls how fast searches are against your project data. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. You can either increase the performance of searches on cached data by adding replicas, or reduce the quantity of cached data by a static factor to save on costs. Pass `null` to reset the Search Power to the default value."
          },
          "boost_window": {
            "maximum": 180,
            "minimum": 1,
            "type": [
              "null",
              "integer"
            ],
            "description": "Determines how much data can benefit from faster search. When ingested, a certain amount of data is loaded into a cache that makes it super fast to query. The system dynamically adjusts the cache allocated to your project based on how much data you ingest during the period defined by your Search Boost Window. Pass `null` to reset the Search Boost Window to the default value."
          },
          "min_search_vcu": {
            "maximum": 2500,
            "minimum": 2,
            "type": [
              "null",
              "integer"
            ],
            "description": "The minimum number of search VCUs allocated to your project. Pass `null` to unset the minimum."
          }
        },
        "description": "Configuration for entire set of capabilities that make the data searchable in Elasticsearch. Pass `null` to reset configuration to the default values."
      },
      "OptionalLinkConfiguration": {
        "type": [
          "null",
          "object"
        ],
        "properties": {
          "projects": {
            "minProperties": 1,
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/OptionalLinkedProject"
            }
          }
        },
        "additionalProperties": false,
        "description": "Configuration for projects linked to this project"
      },
      "OptionalLinkedProject": {
        "required": [
          "type"
        ],
        "type": [
          "null",
          "object"
        ],
        "properties": {
          "type": {
            "$ref": "#/components/schemas/ProjectType"
          }
        },
        "additionalProperties": false,
        "description": "Details of the linked project"
      },
      "OptionalMetadata": {
        "required": [
          "tags"
        ],
        "type": "object",
        "properties": {
          "tags": {
            "$ref": "#/components/schemas/ProjectPatchTags"
          }
        },
        "description": "Metadata about the project"
      },
      "OptionalSecurityAdminFeaturesPackage": {
        "enum": [
          "standard",
          "enterprise"
        ],
        "type": [
          "null",
          "string"
        ],
        "description": "admin features package (BYOK, BYOIDP, CCS, CCR). Pass `null` to reset the admin features package to the default value."
      },
      "OptionalSecuritySearchLake": {
        "type": [
          "null",
          "object"
        ],
        "properties": {
          "data_retention": {
            "$ref": "#/components/schemas/DataRetention"
          }
        },
        "description": "Configuration for the entire set of capabilities that make the data searchable in Security."
      },
      "OptionalTrafficFilters": {
        "type": [
          "null",
          "array"
        ],
        "items": {
          "$ref": "#/components/schemas/TrafficFilter"
        },
        "description": "traffic filters IDs"
      },
      "OptionalVectorDBSearchLake": {
        "type": [
          "null",
          "object"
        ],
        "properties": {
          "search_power": {
            "multipleOf": 100,
            "maximum": 1900,
            "minimum": 100,
            "type": [
              "null",
              "integer"
            ],
            "description": "Controls how fast searches are against your project data. Must be a multiple of 100. Pass `null` to reset the Search Power to the default value."
          }
        },
        "description": "Configuration for entire set of capabilities that make the data searchable in VectorDB. Pass `null` to reset configuration to the default values."
      },
      "PatchElasticsearchProjectRequest": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "search_lake": {
            "$ref": "#/components/schemas/OptionalElasticsearchSearchLake"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/OptionalTrafficFilters"
          },
          "linked": {
            "$ref": "#/components/schemas/OptionalLinkConfiguration"
          },
          "metadata": {
            "$ref": "#/components/schemas/OptionalMetadata"
          }
        },
        "additionalProperties": false,
        "description": "A request to patch an existing Elasticsearch serverless project."
      },
      "PatchObservabilityProjectRequest": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/OptionalTrafficFilters"
          },
          "linked": {
            "$ref": "#/components/schemas/OptionalLinkConfiguration"
          },
          "product_tier": {
            "$ref": "#/components/schemas/ObservabilityProjectProductTier"
          },
          "metadata": {
            "$ref": "#/components/schemas/OptionalMetadata"
          }
        },
        "additionalProperties": false,
        "description": "A request to update an existing Observability project."
      },
      "PatchSecurityProjectRequest": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "admin_features_package": {
            "$ref": "#/components/schemas/OptionalSecurityAdminFeaturesPackage"
          },
          "product_types": {
            "maxItems": 3,
            "minItems": 1,
            "type": [
              "null",
              "array"
            ],
            "items": {
              "$ref": "#/components/schemas/SecurityProductType"
            }
          },
          "search_lake": {
            "$ref": "#/components/schemas/OptionalSecuritySearchLake"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/OptionalTrafficFilters"
          },
          "metadata": {
            "$ref": "#/components/schemas/OptionalMetadata"
          },
          "linked": {
            "$ref": "#/components/schemas/OptionalLinkConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "A request to patch an existing Security project."
      },
      "PatchVectorDBProjectRequest": {
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectName"
          },
          "alias": {
            "$ref": "#/components/schemas/ProjectAlias"
          },
          "search_lake": {
            "$ref": "#/components/schemas/OptionalVectorDBSearchLake"
          },
          "traffic_filters": {
            "$ref": "#/components/schemas/OptionalTrafficFilters"
          },
          "linked": {
            "$ref": "#/components/schemas/OptionalLinkConfiguration"
          },
          "metadata": {
            "$ref": "#/components/schemas/OptionalMetadata"
          }
        },
        "additionalProperties": false,
        "description": "A request to patch an existing VectorDB serverless project."
      },
      "ProjectAlias": {
        "maxLength": 50,
        "minLength": 1,
        "pattern": "^[a-zA-Z]{1}(?:[a-zA-Z0-9-]*[a-zA-Z0-9]{1})?$",
        "type": "string",
        "description": "A custom domain label compatible with RFC-1035 standards. Derived from the project name by default.",
        "example": "my-project-alias"
      },
      "ProjectAliasWithSuffix": {
        "maxLength": 57,
        "minLength": 8,
        "pattern": "^[a-zA-Z]{1}(?:[a-zA-Z0-9-]*[a-zA-Z0-9]{1})?$",
        "type": "string",
        "description": "A domain label compatible with RFC-1035 standards. Project alias with a unique suffix added by the system to avoid naming conflicts.",
        "example": "my-project-alias-bdc0f7"
      },
      "ProjectCredentials": {
        "required": [
          "username",
          "password"
        ],
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "description": "Basic auth username that can be used to access the Elasticsearch API.",
            "example": "admin"
          },
          "password": {
            "type": "string",
            "description": "Basic auth password that can be used to access the Elasticsearch API.",
            "format": "password",
            "example": "*****"
          }
        },
        "description": "Basic auth credentials to access the Elasticsearch API."
      },
      "ProjectID": {
        "pattern": "^[a-z0-9]{32}$",
        "type": "string",
        "description": "ID of the project."
      },
      "ProjectMetadata": {
        "required": [
          "created_at",
          "created_by",
          "organization_id"
        ],
        "type": "object",
        "properties": {
          "created_at": {
            "type": "string",
            "description": "Date and time when the project was created.",
            "format": "date-time"
          },
          "created_by": {
            "$ref": "#/components/schemas/UserID"
          },
          "organization_id": {
            "type": "string",
            "description": "The Organization ID who owns the project.",
            "example": "198583657190"
          },
          "suspended_at": {
            "type": "string",
            "description": "Date and time when the project was suspended.",
            "format": "date-time"
          },
          "suspended_reason": {
            "type": "string",
            "description": "Reason why the project was suspended.",
            "example": "trial expired"
          },
          "tags": {
            "$ref": "#/components/schemas/ProjectTags"
          },
          "system_tags": {
            "$ref": "#/components/schemas/ProjectSystemTags"
          }
        },
        "description": "Additional details about the project."
      },
      "ProjectMetadataRequest": {
        "required": [
          "tags"
        ],
        "type": "object",
        "properties": {
          "tags": {
            "$ref": "#/components/schemas/ProjectTags"
          }
        },
        "description": "Metadata request for a project with tags."
      },
      "ProjectName": {
        "maxLength": 255,
        "minLength": 1,
        "type": "string",
        "description": "Descriptive name for a project.",
        "example": "my project"
      },
      "ProjectPatchTags": {
        "minProperties": 1,
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/ProjectTagPatchValue"
        },
        "description": "Tags that need to be updated for a project. The maximum number of tags that can be updated is 64."
      },
      "ProjectRole": {
        "type": "string",
        "description": "A role name for a particular project"
      },
      "ProjectRoleDescription": {
        "type": "string",
        "description": "A role description for a particular role"
      },
      "ProjectRoleDetails": {
        "required": [
          "name",
          "description"
        ],
        "type": "object",
        "properties": {
          "name": {
            "$ref": "#/components/schemas/ProjectRole"
          },
          "description": {
            "$ref": "#/components/schemas/ProjectRoleDescription"
          }
        },
        "description": "Roles of a serverless project."
      },
      "ProjectRoles": {
        "type": "object",
        "properties": {
          "roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProjectRoleDetails"
            }
          }
        }
      },
      "ProjectRolesByProjectID": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/ProjectRoles"
        }
      },
      "ProjectStatus": {
        "required": [
          "phase"
        ],
        "type": "object",
        "properties": {
          "phase": {
            "$ref": "#/components/schemas/ProjectStatusPhase"
          },
          "phase_change_timestamp": {
            "type": "string",
            "description": "Date and time when the project changed to the current phase.",
            "format": "date-time"
          }
        },
        "description": "Status of a serverless project."
      },
      "ProjectStatusPhase": {
        "enum": [
          "initializing",
          "initialized",
          "deleting",
          "suspending",
          "suspended"
        ],
        "type": "string",
        "description": "Current phase of the project:\n- initializing: the project is still being created and is not ready for use yet. Projects being resumed or restored transition back to this phase.\n- initialized: the project has been created successfully and is ready for use\n- deleting: the project is being deleted but the process has not completed yet. The project is not usable in this phase.\n- deleted: the project has been deleted. This is a terminal phase, after which the project will be removed from the system after a certain retention period.\n- suspending: the project is being suspended but the process has not completed yet. The project is not usable in this phase.\n- suspended: the project has been suspended. The project is not usable in this phase.\n"
      },
      "ProjectSystemTags": {
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/ProjectTagValue"
        },
        "description": "System tags associated with a project in the form of key-value pairs. These tags are added by the internal system and are read-only. The keys are prefixed with an underscore to differentiate them from user tags."
      },
      "ProjectTagPatchValue": {
        "maxLength": 128,
        "minLength": 1,
        "pattern": "^[a-z0-9][a-z0-9_-]*$",
        "type": [
          "null",
          "string"
        ]
      },
      "ProjectTagValue": {
        "maxLength": 128,
        "minLength": 1,
        "pattern": "^[a-z0-9][a-z0-9_-]*$",
        "type": "string"
      },
      "ProjectTags": {
        "maxProperties": 64,
        "minProperties": 1,
        "type": "object",
        "additionalProperties": {
          "$ref": "#/components/schemas/ProjectTagValue"
        },
        "description": "Tags associated with a project in the form of key-value pairs. Tags are limited to a minimum of 1 and a maximum of 64 per project. Each tag key must begin with a lowercase letter (a-z), contain only lowercase letters, digits, underscores, and hyphens (a-z0-9_-), and have a maximum length of 32 characters."
      },
      "ProjectType": {
        "enum": [
          "elasticsearch",
          "observability",
          "security",
          "vectordb"
        ],
        "type": "string",
        "description": "The type of the linked project",
        "x-enumNames": [
          "ProjectTypeElasticsearch",
          "ProjectTypeObservability",
          "ProjectTypeSecurity",
          "ProjectTypeVectorDB"
        ]
      },
      "Quotas": {
        "required": [
          "max_projects"
        ],
        "type": "object",
        "properties": {
          "max_projects": {
            "type": "integer",
            "description": "The maximum number of projects that can be created in the organization.",
            "example": 500
          }
        },
        "description": "Quota limits that apply to the organization."
      },
      "RegionID": {
        "type": "string",
        "description": "Unique human-readable identifier for a region in Elastic Cloud.",
        "example": "aws-us-east-1"
      },
      "SecurityAdminFeaturesPackage": {
        "enum": [
          "standard",
          "enterprise"
        ],
        "type": "string",
        "description": "admin features package (BYOK, BYOIDP, CCS, CCR)"
      },
      "SecurityProductLine": {
        "enum": [
          "security",
          "cloud",
          "endpoint"
        ],
        "type": "string",
        "description": "The identifier of the Security Solution product line."
      },
      "SecurityProductTier": {
        "enum": [
          "complete",
          "essentials"
        ],
        "type": "string",
        "description": "The identifier of the Security Solution product tier.",
        "x-enumNames": [
          "SecurityProductTierComplete",
          "SecurityProductTierEssentials",
          "SecurityProductTierSearchAiLake",
          "SecurityProductTierAiSocEngine"
        ]
      },
      "SecurityProductType": {
        "required": [
          "product_line",
          "product_tier"
        ],
        "type": "object",
        "properties": {
          "product_line": {
            "$ref": "#/components/schemas/SecurityProductLine"
          },
          "product_tier": {
            "$ref": "#/components/schemas/SecurityProductTier"
          }
        },
        "description": "Defines Security product type object with product line and tier dimensions."
      },
      "SecurityProject": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CommonProjectFields"
          },
          {
            "$ref": "#/components/schemas/SecurityProjectFields"
          }
        ],
        "description": "A Security project."
      },
      "SecurityProjectCreated": {
        "allOf": [
          {
            "$ref": "#/components/schemas/SecurityProject"
          },
          {
            "required": [
              "credentials"
            ],
            "type": "object",
            "properties": {
              "credentials": {
                "$ref": "#/components/schemas/ProjectCredentials"
              }
            }
          }
        ],
        "description": "The created Security project along with credentials to access Elasticsearch."
      },
      "SecurityProjectEndpoints": {
        "required": [
          "elasticsearch",
          "kibana",
          "ingest"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The endpoint to access elasticsearch."
          },
          "kibana": {
            "type": "string",
            "description": "The endpoint to access kibana."
          },
          "ingest": {
            "type": "string",
            "description": "The endpoint to access the Managed OTLP Endpoint."
          }
        },
        "description": "The endpoints to access the different apps of the project."
      },
      "SecurityProjectFields": {
        "required": [
          "type",
          "endpoints"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "security"
            ],
            "type": "string",
            "description": "the type of the project"
          },
          "endpoints": {
            "$ref": "#/components/schemas/SecurityProjectEndpoints"
          },
          "private_endpoints": {
            "$ref": "#/components/schemas/SecurityProjectPrivateEndpoints"
          },
          "search_lake": {
            "$ref": "#/components/schemas/SecuritySearchLake"
          },
          "admin_features_package": {
            "$ref": "#/components/schemas/SecurityAdminFeaturesPackage"
          },
          "product_types": {
            "maxItems": 3,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityProductType"
            },
            "default": [
              {
                "product_line": "security",
                "product_tier": "complete"
              },
              {
                "product_line": "cloud",
                "product_tier": "complete"
              },
              {
                "product_line": "endpoint",
                "product_tier": "complete"
              }
            ]
          }
        },
        "description": "Specific fields of a Security project."
      },
      "SecurityProjectList": {
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "next_page": {
            "type": "string",
            "description": "A token to fetch the next page.",
            "deprecated": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityProject"
            },
            "description": "The actual projects."
          }
        },
        "description": "A paginated list of serverless Security projects."
      },
      "SecurityProjectPrivateEndpoints": {
        "required": [
          "elasticsearch",
          "kibana",
          "ingest"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access elasticsearch.",
            "example": "https://my-project-alias-df6c6d.es.private.us-east-1.aws.elastic.cloud"
          },
          "kibana": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access kibana.",
            "example": "https://my-project-alias-df6c6d.kb.private.us-east-1.aws.elastic.cloud"
          },
          "ingest": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access the Managed OTLP Endpoint.",
            "example": "https://my-project-alias-df6c6d.ingest.private.us-east-1.aws.elastic.cloud"
          }
        },
        "description": "Private endpoints (URLs) for Security projects when PrivateLink is enabled."
      },
      "SecuritySearchLake": {
        "type": "object",
        "properties": {
          "data_retention": {
            "$ref": "#/components/schemas/DataRetention"
          }
        },
        "description": "Configuration for the entire set of capabilities that make the data searchable in Security."
      },
      "TrafficFilter": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "traffic filter ID",
            "example": "traffic-filter-1"
          }
        },
        "description": "traffic filters association info"
      },
      "TrafficFilters": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/TrafficFilter"
        },
        "description": "traffic filters IDs"
      },
      "UserID": {
        "type": "string",
        "description": "ID of the user.",
        "example": "1014289666002276"
      },
      "VectorDBProject": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CommonProjectFields"
          },
          {
            "$ref": "#/components/schemas/VectorDBProjectFields"
          }
        ],
        "description": "A VectorDB serverless project."
      },
      "VectorDBProjectCreated": {
        "allOf": [
          {
            "$ref": "#/components/schemas/VectorDBProject"
          },
          {
            "required": [
              "credentials"
            ],
            "type": "object",
            "properties": {
              "credentials": {
                "$ref": "#/components/schemas/ProjectCredentials"
              }
            }
          }
        ],
        "description": "The created VectorDB project along with credentials to access the project."
      },
      "VectorDBProjectEndpoints": {
        "required": [
          "elasticsearch",
          "kibana"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The endpoint to access elasticsearch.",
            "example": "https://my-project-alias-df6c6d.es.us-east-1.aws.elastic.cloud"
          },
          "kibana": {
            "type": "string",
            "description": "The endpoint to access kibana.",
            "example": "https://my-project-alias-df6c6d.kb.us-east-1.aws.elastic.cloud"
          }
        },
        "description": "The endpoints to access the different apps of the project."
      },
      "VectorDBProjectFields": {
        "required": [
          "type",
          "endpoints"
        ],
        "type": "object",
        "properties": {
          "type": {
            "enum": [
              "vectordb"
            ],
            "type": "string",
            "description": "the type of the project",
            "x-enumNames": [
              "VectorDB"
            ]
          },
          "endpoints": {
            "$ref": "#/components/schemas/VectorDBProjectEndpoints"
          },
          "private_endpoints": {
            "$ref": "#/components/schemas/VectorDBProjectPrivateEndpoints"
          },
          "search_lake": {
            "$ref": "#/components/schemas/VectorDBSearchLake"
          }
        },
        "description": "Specific fields of a VectorDB serverless project."
      },
      "VectorDBProjectList": {
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "next_page": {
            "type": "string",
            "description": "A token to fetch the next page.",
            "example": "YyMzY1MDQiLCJtYXgiOiJGRiJ9fV0=",
            "deprecated": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VectorDBProject"
            },
            "description": "The actual projects."
          }
        },
        "description": "A paginated list of serverless VectorDB projects."
      },
      "VectorDBProjectPrivateEndpoints": {
        "required": [
          "elasticsearch",
          "kibana"
        ],
        "type": "object",
        "properties": {
          "elasticsearch": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access elasticsearch.",
            "example": "https://my-project-alias-df6c6d.es.private.us-east-1.aws.elastic.cloud"
          },
          "kibana": {
            "type": "string",
            "description": "The PrivateLink endpoint URL to access kibana.",
            "example": "https://my-project-alias-df6c6d.kb.private.us-east-1.aws.elastic.cloud"
          }
        },
        "description": "Private endpoints (URLs) for VectorDB projects when PrivateLink is enabled."
      },
      "VectorDBSearchLake": {
        "type": "object",
        "properties": {
          "search_power": {
            "multipleOf": 100,
            "maximum": 1900,
            "minimum": 100,
            "type": "integer",
            "description": "Controls how fast searches are against your project data. Must be a multiple of 100.",
            "example": 100
          }
        },
        "description": "Configuration for entire set of capabilities that make the data searchable in VectorDB."
      },
      "CSP": {
        "enum": [
          "aws",
          "gcp",
          "azure"
        ],
        "type": "string",
        "description": "The identifier of the cloud service provider hosting this region."
      },
      "CountryCode": {
        "type": "string",
        "description": "ISO 3166-1 alpha-2 country code which this region is associated with",
        "example": "US"
      },
      "Region": {
        "required": [
          "id",
          "name",
          "csp",
          "csp_region",
          "country_code",
          "project_creation_enabled"
        ],
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/RegionID"
          },
          "name": {
            "type": "string",
            "description": "The human readable name for the region",
            "example": "US (Virginia)"
          },
          "csp": {
            "$ref": "#/components/schemas/CSP"
          },
          "csp_region": {
            "type": "string",
            "description": "The unique identifier of the underlying cloud service provider region.",
            "example": "us-east-1"
          },
          "country_code": {
            "$ref": "#/components/schemas/CountryCode"
          },
          "project_creation_enabled": {
            "type": "boolean",
            "description": "Specifies whether the region is available for project creation"
          }
        },
        "description": "A Cloud Service Provider region."
      },
      "CreateTrafficFilterRequest": {
        "required": [
          "name",
          "region",
          "type"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string",
            "description": "Name of the traffic filter"
          },
          "description": {
            "maxLength": 512,
            "minLength": 0,
            "type": "string",
            "description": "Description of the traffic filter"
          },
          "type": {
            "$ref": "#/components/schemas/TrafficFilterType"
          },
          "include_by_default": {
            "type": "boolean",
            "description": "Should the traffic filter be automatically included in the new projects"
          },
          "region": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string",
            "description": "Serverless region ID the filter applies to (e.g. `azure-australiaeast`, `aws-eu-west-1`).\nThe filter can only be attached to projects in this region.\n",
            "example": "azure-australiaeast"
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficFilterRule"
            },
            "description": "List of rules. Required fields depend on `type`:\n- `ip`, `vpce` and `psc_endpoint` use `source`.\n- `private_endpoint` uses `azure_endpoint_name` and `azure_endpoint_guid`, not `source`.\n"
          }
        },
        "description": "The specification for traffic filter."
      },
      "PatchTrafficFilterRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the traffic filter"
          },
          "description": {
            "type": "string",
            "description": "Description of the traffic filter"
          },
          "include_by_default": {
            "type": "boolean",
            "description": "Should the traffic filter be automatically included in the new projects"
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficFilterRule"
            },
            "description": "List of rules"
          }
        },
        "description": "The specification for traffic filter."
      },
      "TrafficFilterAvailabilityZone": {
        "required": [
          "name",
          "id"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          }
        }
      },
      "TrafficFilterInfo": {
        "required": [
          "id",
          "include_by_default",
          "name",
          "region",
          "rules",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 32,
            "minLength": 32,
            "type": "string",
            "description": "The traffic filter ID"
          },
          "name": {
            "maxLength": 128,
            "minLength": 1,
            "type": "string",
            "description": "Name of the traffic filter"
          },
          "description": {
            "maxLength": 512,
            "minLength": 0,
            "type": "string",
            "description": "Description of the traffic filter"
          },
          "type": {
            "$ref": "#/components/schemas/TrafficFilterType"
          },
          "include_by_default": {
            "type": "boolean",
            "description": "Should the traffic filter be automatically included in the new projects"
          },
          "region": {
            "maxLength": 32,
            "minLength": 1,
            "type": "string",
            "description": "The traffic filter can be attached only to projects in the specific region"
          },
          "rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficFilterRule"
            },
            "description": "List of rules"
          }
        },
        "description": "The container for a set of traffic filter rules."
      },
      "TrafficFilterList": {
        "required": [
          "items"
        ],
        "type": "object",
        "properties": {
          "next_page": {
            "type": [
              "null",
              "string"
            ],
            "description": "A token to fetch the next page.",
            "example": "YyMzY1MDQiLCJtYXgiOiJGRiJ9fV0="
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficFilterInfo"
            },
            "description": "List of traffic filters"
          }
        },
        "description": "The container for a set of traffic filter."
      },
      "TrafficFilterMetadata": {
        "type": "object",
        "properties": {
          "regions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficFilterRegionMetadata"
            }
          }
        },
        "description": "Region-scoped PrivateLink metadata."
      },
      "TrafficFilterRegionMetadata": {
        "required": [
          "region",
          "csp",
          "private_service_name",
          "private_hosted_zone_domain_name",
          "availability_zones"
        ],
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "description": "Serverless region ID (e.g. `azure-australiaeast`, `aws-eu-west-1`).",
            "example": "azure-australiaeast"
          },
          "csp": {
            "enum": [
              "aws",
              "azure",
              "gcp"
            ],
            "type": "string",
            "description": "Cloud service provider.",
            "example": "azure"
          },
          "vpc_service_name": {
            "type": "string",
            "description": "Deprecated. Use private_service_name instead. Kept for backward compatibility.",
            "deprecated": true
          },
          "private_service_name": {
            "type": "string",
            "description": "CSP-specific PrivateLink service identifier. Use the `/metadata` endpoint to look up\nthe value for your region. See also [Private connectivity](https://www.elastic.co/docs/deploy-manage/security/private-connectivity).\n- **AWS**: VPC endpoint service name (e.g. `com.amazonaws.vpce.eu-west-1.vpce-svc-…`).\n- **Azure**: Private Link Service alias (e.g. `australiaeast-prod-….australiaeast.azure.privatelinkservice`).\n- **GCP**: Service Attachment URI.\n",
            "example": "australiaeast-prod-012-privatelink-service.a0cf0c1a-33ab-4528-81e7-9cb23608f94e.australiaeast.azure.privatelinkservice"
          },
          "private_hosted_zone_domain_name": {
            "type": "string",
            "description": "Private DNS suffix for project endpoints in this region. Create DNS records pointing\nto your Private Endpoint under this zone.\n",
            "example": "private.australiaeast.azure.elastic.cloud"
          },
          "availability_zones": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrafficFilterAvailabilityZone"
            }
          }
        }
      },
      "TrafficFilterRule": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "description": "Optional human-readable description of the rule."
          },
          "source": {
            "type": "string",
            "description": "Allowed source for `ip`, `vpce`, or `psc_endpoint` filters: an IP address, CIDR\nmask, AWS VPC endpoint ID (`vpce-` followed by 17 lowercase hex characters), or\nGCP PSC connection ID.\nMust not be set for `private_endpoint` filters.\n",
            "example": "vpce-0123456789abcdef0"
          },
          "azure_endpoint_name": {
            "maxLength": 80,
            "minLength": 2,
            "pattern": "^[a-zA-Z0-9][-\\w.]{0,78}[\\w]$",
            "type": "string",
            "description": "Azure Private Endpoint resource name. Required for `private_endpoint` filters;\nnot applicable to `ip`, `vpce`, or `psc_endpoint` filters.\nMust be 2–80 characters, start with an alphanumeric character, and end with an\nalphanumeric character or underscore. May contain alphanumerics, underscores,\nperiods, and hyphens.\n",
            "example": "my-private-endpoint"
          },
          "azure_endpoint_guid": {
            "pattern": "^[a-f0-9]{8}-([a-f0-9]{4}-){3}[a-f0-9]{12}$",
            "type": "string",
            "description": "Azure Private Endpoint **resource GUID** (`properties.resourceGuid` from the Azure\nresource). Required for `private_endpoint` filters. Must be a lowercase UUID.\nThis is not the ARM resource ID.\n",
            "example": "7c0f05e4-e32b-4b10-a246-7b77f7dcc63c"
          }
        },
        "description": "A single traffic filter rule. Which fields are required depends on the parent filter's\n`type` — the fields are mutually exclusive between Azure and IP/private-connectivity rules.\n"
      },
      "TrafficFilterType": {
        "maxLength": 32,
        "minLength": 1,
        "enum": [
          "ip",
          "vpce",
          "private_endpoint",
          "psc_endpoint"
        ],
        "type": "string",
        "description": "Type of the traffic filter. Determines which rule fields are valid:\n- `ip` — IP/CIDR allowlist (`source`)\n- `vpce` — AWS PrivateLink VPC endpoint (`source`)\n- `private_endpoint` — Azure Private Link (`azure_endpoint_name`, `azure_endpoint_guid`)\n- `psc_endpoint` — GCP Private Service Connect endpoint (`source`)\n"
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      },
      "NotFound": {
        "description": "Not Found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Unauthorized",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      },
      "UnprocessableEntity": {
        "description": "Unprocessable entity",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      },
      "Conflict": {
        "description": "Conflict",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      },
      "PreconditionFailed": {
        "description": "Precondition failed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal server error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/MultiErrorResponse"
            }
          }
        }
      }
    },
    "requestBodies": {
      "CreateTrafficFilterRequestBody": {
        "description": "The specification for traffic filter.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/CreateTrafficFilterRequest"
            },
            "examples": {
              "azurePrivateEndpoint": {
                "summary": "Azure Private Endpoint filter",
                "description": "Use for Azure Private Link. Requires a pending PE connection created against\nthe region's PLS alias from the metadata endpoint.\n",
                "value": {
                  "name": "my-azure-pl-filter",
                  "description": "Allow traffic from office VNet",
                  "region": "azure-australiaeast",
                  "type": "private_endpoint",
                  "include_by_default": false,
                  "rules": [
                    {
                      "description": "Office VNet PE",
                      "azure_endpoint_name": "my-private-endpoint",
                      "azure_endpoint_guid": "7c0f05e4-e32b-4b10-a246-7b77f7dcc63c"
                    }
                  ]
                }
              },
              "awsVpce": {
                "summary": "AWS PrivateLink filter",
                "value": {
                  "name": "my-aws-pl-filter",
                  "region": "aws-eu-west-1",
                  "type": "vpce",
                  "include_by_default": false,
                  "rules": [
                    {
                      "source": "vpce-0123456789abcdef0"
                    }
                  ]
                }
              },
              "gcpPscEndpoint": {
                "summary": "GCP Private Service Connect filter",
                "value": {
                  "name": "my-gcp-psc-filter",
                  "region": "gcp-us-central1",
                  "type": "psc_endpoint",
                  "include_by_default": false,
                  "rules": [
                    {
                      "source": "12345678901234567890"
                    }
                  ]
                }
              },
              "ipFilter": {
                "summary": "IP allowlist filter",
                "value": {
                  "name": "my-ip-filter",
                  "region": "aws-eu-west-1",
                  "type": "ip",
                  "include_by_default": false,
                  "rules": [
                    {
                      "source": "203.0.113.0/24"
                    }
                  ]
                }
              }
            }
          }
        },
        "required": true
      },
      "PatchTrafficFilterBody": {
        "description": "The specification for traffic filter.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/PatchTrafficFilterRequest"
            }
          }
        },
        "required": true
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "description": "API keys are used to authenticate requests to the Elastic Cloud Serverless REST API.\nGenerate your secret API key in https://cloud.elastic.co/account/keys\nYou must provide the API key for all API requests in the Authorization header as follows:\n\n```\n\"Authorization: ApiKey $API_KEY\"\n```\n\nFor example, if you interact with the API using the curl command:\n\n```\ncurl -H \"Authorization: ApiKey essu_...\" https://api.elastic-cloud.com/api/v1/serverless/projects/elasticsearch\n```\n",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "apiKey": [ ]
    }
  ],
  "tags": [
    {
      "name": "elasticsearch projects",
      "description": "Management of Elasticsearch projects"
    },
    {
      "name": "capabilities",
      "description": "Capabilities that apply to the user's organization"
    },
    {
      "name": "observability projects",
      "description": "Management of Observability projects"
    },
    {
      "name": "security projects",
      "description": "Management of Security projects"
    },
    {
      "name": "vectordb projects",
      "description": "Management of VectorDB projects"
    },
    {
      "name": "regions",
      "description": "Cloud service provider regions"
    },
    {
      "name": "traffic filters",
      "description": "Create, read, update, and delete traffic filters for Serverless projects, and retrieve\nregional PrivateLink metadata (AWS VPC endpoint service names, Azure PLS aliases, GCP\nservice attachment URIs).\n"
    }
  ]
}