{
  "openapi": "3.0.4",
  "info": {
    "title": "Public API",
    "description": "Public API endpoints for user consumption. Release version: v1.9.19.0",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://api.bunny.net/mc"
    }
  ],
  "paths": {
    "/apps/{appId}/deploy": {
      "post": {
        "tags": [
          "Applications"
        ],
        "summary": "Deploy Application",
        "description": "Deploys an application, making it active and running.",
        "operationId": "DeployApplication",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Application was successfully deployed."
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application is not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "409": {
            "description": "Application is suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/undeploy": {
      "post": {
        "tags": [
          "Applications"
        ],
        "summary": "Undeploy Application",
        "description": "Undeploys an application, stopping all running instances.",
        "operationId": "UndeployApplication",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Application was successfully undeployed."
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application is not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "409": {
            "description": "Application is suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/statistics": {
      "get": {
        "tags": [
          "Applications"
        ],
        "summary": "Get Application Statistics",
        "description": "Retrieves historical statistics for an application including CPU, RAM, traffic, latency, and volume usage over a specified time period.",
        "operationId": "GetApplicationStatistics",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2025-01-01T00:00:00Z"
          },
          {
            "name": "toDate",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "example": "2025-01-31T23:59:59Z"
          },
          {
            "name": "granularity",
            "in": "query",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DataGranularity"
            },
            "example": "Hourly"
          }
        ],
        "responses": {
          "200": {
            "description": "Application statistics was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Statistics"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application is not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/summary": {
      "get": {
        "tags": [
          "Applications"
        ],
        "summary": "Get Application Usage Summary",
        "description": "Retrieves usage summary for an application including latency, volume size, monthly cost, and status information.",
        "operationId": "GetApplicationUsageSummary",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Application usage summary was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageSummary"
                }
              }
            }
          },
          "404": {
            "description": "Application is not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized."
          }
        }
      }
    },
    "/apps/{appId}/overview": {
      "get": {
        "tags": [
          "Applications"
        ],
        "summary": "Get Application Overview",
        "description": "Retrieves comprehensive status overview for an application including latency, CPU/RAM usage, active instances, regions, and cost information.",
        "operationId": "GetApplicationOverview",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Application status overview was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Overview"
                }
              }
            }
          },
          "404": {
            "description": "Application is not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized."
          }
        }
      }
    },
    "/apps": {
      "post": {
        "tags": [
          "Applications"
        ],
        "summary": "Add Application",
        "description": "Creates a new application with the specified configuration including containers, volumes, region settings, and autoscaling.",
        "operationId": "AddApplication",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddApplicationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddApplicationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddApplicationRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Application was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddApplicationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "409": {
            "description": "Application count limit is reached.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Applications"
        ],
        "summary": "List Applications",
        "description": "Lists all applications for the authenticated user with their current status.",
        "operationId": "ListApplications",
        "parameters": [
          {
            "name": "nextCursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Applications list retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListApplicationsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}": {
      "patch": {
        "tags": [
          "Applications"
        ],
        "summary": "Patch Application",
        "description": "Partially updates an existing application using JSON Merge Patch semantics. Only provided fields will be updated; existing fields not included in the request will remain unchanged. For arrays (containers, volumes, endpoints), items with matching IDs will be updated, items without IDs will be added as new, and items not included will be deleted.",
        "operationId": "PatchApplication",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Partial application configuration with only the fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchApplicationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchApplicationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchApplicationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Application was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddApplicationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Applications"
        ],
        "summary": "Update Application",
        "description": "Updates an existing application with full replacement of all configuration fields.",
        "operationId": "UpdateApplication",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Complete application configuration",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddApplicationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddApplicationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddApplicationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Application was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddApplicationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or application ID mismatch.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Applications"
        ],
        "summary": "Get application",
        "operationId": "GetApplication",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Application retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Application"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application is not found by this ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Applications"
        ],
        "summary": "Delete Application",
        "description": "Marks the application for deletion and enqueues cleanup of all associated resources. Returns immediately; deletion is processed asynchronously.",
        "operationId": "DeleteApplication",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Application deletion has been accepted and is being processed asynchronously."
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/restart": {
      "post": {
        "tags": [
          "Applications"
        ],
        "summary": "Restart Application",
        "description": "Triggers a restart of all pods for the specified application.",
        "operationId": "RestartApplication",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Application restart was successfully triggered."
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application is not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/autoscaling": {
      "get": {
        "tags": [
          "AutoscalingSettings"
        ],
        "summary": "Get Application Autoscaling",
        "description": "Retrieves the current autoscaling settings for an application, including minimum and maximum replica counts.",
        "operationId": "GetApplicationAutoscaling",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Autoscaling settings retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AutoscalingSettings"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "AutoscalingSettings"
        ],
        "summary": "Update Application Autoscaling",
        "description": "Updates the autoscaling settings for an application, including minimum and maximum replica counts.",
        "operationId": "UpdateApplicationAutoscaling",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Autoscaling settings to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoscalingSettings"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AutoscalingSettings"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AutoscalingSettings"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Autoscaling settings updated successfully."
          },
          "400": {
            "description": "Invalid input or validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or is suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/registries": {
      "get": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "List Container Registries",
        "description": "Lists all container registries configured for the authenticated user.",
        "operationId": "ListContainerRegistries",
        "responses": {
          "200": {
            "description": "Container registries were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListContainerRegistriesResponse"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "Add container registry",
        "description": "Add a container registry for user.",
        "operationId": "AddContainerRegistry",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContainerRegistryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ContainerRegistryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ContainerRegistryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Container registry was successfully added.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SaveContainerRegistryResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/registries/public-images/search": {
      "post": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "Search Public Container Images",
        "description": "Searches for public container images in a registry by prefix.",
        "operationId": "SearchForPublicContainerImages",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicContainerImagesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicContainerImagesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicContainerImagesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Public images were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContainerImage"
                  }
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/registries/images": {
      "post": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "List Container Images",
        "description": "Lists all container images available in a private registry.",
        "operationId": "ListContainerImages",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListContainerImagesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ListContainerImagesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ListContainerImagesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Container images were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContainerImage"
                  }
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/registries/{registryId}": {
      "put": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "Update Container Registry",
        "description": "Updates an existing container registry configuration including credentials.",
        "operationId": "UpdateContainerRegistry",
        "parameters": [
          {
            "name": "registryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContainerRegistryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ContainerRegistryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ContainerRegistryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Container registry was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SaveContainerRegistryResult"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Container registry not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "Get Container Registry",
        "description": "Retrieves a specific container registry by its ID.",
        "operationId": "GetContainerRegistry",
        "parameters": [
          {
            "name": "registryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Container registry was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContainerRegistry"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Container registry not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "Delete Container Registry",
        "description": "Deletes a container registry. Returns an error if the registry is currently in use by any applications.",
        "operationId": "DeleteContainerRegistry",
        "parameters": [
          {
            "name": "registryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Container registry was deleted or conflict returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemoveContainerRegistryResult"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Container registry is used.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/registries/tags": {
      "post": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "List Container Image Tags",
        "description": "Lists all available tags for a specific container image.",
        "operationId": "ListContainerImageTags",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListContainerImageTagsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ListContainerImageTagsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ListContainerImageTagsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Container image tags were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ContainerImageTag"
                  }
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/registries/digest": {
      "post": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "Get Container Image Digest",
        "description": "Retrieves the digest information for a specific container image tag.",
        "operationId": "GetContainerImageTagDigest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetContainerImageDigestByTagRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetContainerImageDigestByTagRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetContainerImageDigestByTagRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Container image tag digest was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ImageTagInfo"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/registries/config-suggestions": {
      "post": {
        "tags": [
          "ContainerRegistries"
        ],
        "summary": "Get Container Config Suggestions",
        "description": "Gets recommended configuration for a container image including endpoint configurations and environment variables.",
        "operationId": "GetContainerConfigSuggestions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetContainerConfigSuggestionsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetContainerConfigSuggestionsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetContainerConfigSuggestionsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Configuration suggestions were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContainerConfigSuggestions"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/containers/{containerId}/env": {
      "put": {
        "tags": [
          "Containers"
        ],
        "summary": "Set Container Environment Variables",
        "description": "Replaces all environment variables for a container template. All existing environment variables will be removed and replaced with the provided set.",
        "operationId": "SetContainerEnvironmentVariables",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "containerId",
            "in": "path",
            "description": "The ID of the container template",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "A JSON object where each key is the variable name and each value is the variable value",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "object",
                "additionalProperties": {
                  "type": "string"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Environment variables were successfully replaced.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContainerTemplate"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application or container template not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/containers/{containerId}": {
      "patch": {
        "tags": [
          "Containers"
        ],
        "summary": "Patch Container Template",
        "description": "Partially updates a container template within an application. Only provided fields will be updated; existing fields not included in the request will remain unchanged.",
        "operationId": "PatchApplicationContainerTemplate",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "containerId",
            "in": "path",
            "description": "The ID of the container template to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Partial container template configuration with only the fields to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchContainerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchContainerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchContainerRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Container template was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContainerTemplate"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application or container template not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Containers"
        ],
        "summary": "Get Container Template",
        "description": "Gets a container template within an application.",
        "operationId": "GetApplicationContainerTemplate",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "containerId",
            "in": "path",
            "description": "The ID of the container template",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Container template retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContainerTemplate"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application or container template not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Containers"
        ],
        "summary": "Delete Container Template",
        "description": "Deletes a container template from an application.",
        "operationId": "DeleteApplicationContainerTemplate",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "containerId",
            "in": "path",
            "description": "The ID of the container template to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Container template was successfully deleted."
          },
          "400": {
            "description": "Cannot delete the last container template.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application or container template not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/containers": {
      "post": {
        "tags": [
          "Containers"
        ],
        "summary": "Add Container Template",
        "description": "Adds a new container template to an application.",
        "operationId": "AddApplicationContainerTemplate",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The container template configuration",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddContainerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddContainerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddContainerRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Container template was successfully added.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContainerTemplate"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/endpoints/{endpointId}": {
      "put": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Update Application Endpoint",
        "description": "Update an existing endpoint for given application",
        "operationId": "UpdateApplicationEndpoint",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endpointId",
            "in": "path",
            "description": "The display name of the endpoint to update",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Ab3xK9mPq2wR7nL-myendpoint-Kj7mNp3qRx"
          }
        ],
        "requestBody": {
          "description": "The updated endpoint configuration",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EndpointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EndpointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EndpointRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Endpoint was successfully updated."
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application, container, or endpoint not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Delete application endpoint",
        "description": "Delete endpoint of a container for given application.",
        "operationId": "DeleteApplicationEndpoint",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "endpointId",
            "in": "path",
            "description": "The ID of the endpoint to delete",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Ab3xK9mPq2wR7nL-myendpoint-Kj7mNp3qRx"
          }
        ],
        "responses": {
          "200": {
            "description": "Endpoint was successfully deleted."
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application or endpoint not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/endpoints": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "List application endpoints",
        "description": "List endpoints from all containers for given application",
        "operationId": "ListApplicationEndpoints",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Endpoints were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListEndpointsResponse"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/containers/{containerId}/endpoints": {
      "post": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Add application endpoint",
        "description": "Add CDN or Anycast endpoint to a container of given application.",
        "operationId": "AddApplicationEndpoint",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "containerId",
            "in": "path",
            "description": "The ID of the container template",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The endpoint configuration",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EndpointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EndpointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EndpointRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Endpoint was successfully created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SaveEndpointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or endpoint name already exists.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application or container not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/limits": {
      "get": {
        "tags": [
          "Limits"
        ],
        "summary": "Get User Limits",
        "description": "Retrieves the current resource limits and usage for the authenticated user, including application counts and instance limits.",
        "operationId": "GetLimits",
        "responses": {
          "200": {
            "description": "Limits were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserLimits"
                }
              }
            }
          },
          "404": {
            "description": "Limits not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/nodes": {
      "get": {
        "tags": [
          "Nodes"
        ],
        "summary": "List Nodes",
        "description": "Lists all node IP addresses in the Magic Containers network.",
        "operationId": "ListNodes",
        "parameters": [
          {
            "name": "nextCursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Nodes were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListNodesResponse"
                }
              },
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ListNodesResponse"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              },
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/nodes/plain": {
      "get": {
        "tags": [
          "Nodes"
        ],
        "summary": "List Node IPs (Plain)",
        "description": "Lists all node IP addresses in the Magic Containers network as a flat list.",
        "operationId": "ListNodesPlain",
        "responses": {
          "200": {
            "description": "Node IPs were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              },
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/pods/{podId}/recreate": {
      "post": {
        "tags": [
          "Pods"
        ],
        "summary": "Recreate Pod",
        "description": "Recreate a pod, deleting previous one.",
        "operationId": "RecreatePod",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "podId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "Xb3xK9mPq2wR7n"
          }
        ],
        "responses": {
          "200": {
            "description": "Pod reset was successfully triggered."
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Pod is not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "409": {
            "description": "Conflict",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/regions": {
      "get": {
        "tags": [
          "Regions"
        ],
        "summary": "List Regions",
        "description": "Lists all available regions where applications can be deployed, including their anycast support and capacity status.",
        "operationId": "ListRegions",
        "parameters": [
          {
            "name": "nextCursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer",
              "format": "int32",
              "default": 20
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Regions were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListRegionsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/regions/optimal": {
      "get": {
        "tags": [
          "Regions"
        ],
        "summary": "Get Optimal Base Region",
        "description": "Returns the optimal base region for deployment based on the user's CDN server token location.",
        "operationId": "GetOptimalBaseRegion",
        "parameters": [
          {
            "name": "cdnServerToken",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Optimal base region was successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OptimalBaseRegionResponse"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/region-settings": {
      "get": {
        "tags": [
          "RegionSettings"
        ],
        "summary": "Get Application Region Settings",
        "description": "Retrieves the current region settings for an application, including allowed regions, required regions, and maximum allowed regions.",
        "operationId": "GetApplicationRegionSettings",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Region settings retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegionSettings"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "RegionSettings"
        ],
        "summary": "Update Application Region Settings",
        "description": "Updates the region settings for an application, including allowed regions, required regions, and maximum allowed regions.",
        "operationId": "UpdateApplicationRegionSettings",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "The ID of the application",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Region settings to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRegionSettingsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRegionSettingsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateRegionSettingsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Region settings updated successfully."
          },
          "400": {
            "description": "Invalid input or validation error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "User has invalid card or is suspended.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/volumes/{volumeId}": {
      "patch": {
        "tags": [
          "Volumes"
        ],
        "summary": "Update Volume",
        "description": "Partially updates a volume template's configuration including name and size. Only provided fields will be updated.",
        "operationId": "UpdateVolume",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "volumeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-data-volume"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchVolumeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchVolumeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchVolumeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Volume was successfully updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdateVolumeResponse"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Volume template not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Volumes"
        ],
        "summary": "Delete All Volume Instances",
        "description": "Deletes all volume instances for a volume template. All instances must be detached before deletion.",
        "operationId": "DeleteAllVolumeInstances",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "volumeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-data-volume"
          }
        ],
        "responses": {
          "200": {
            "description": "Volume instances were deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteAllVolumeInstancesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Some volume instances are not detached.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Volume template or instances not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/volumes": {
      "get": {
        "tags": [
          "Volumes"
        ],
        "summary": "List Volumes",
        "description": "Lists all volume templates and their instances for an application, including usage statistics.",
        "operationId": "ListVolumes",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Volumes were successfully retrieved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListVolumesResponse"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/volumes/{volumeId}/detach": {
      "post": {
        "tags": [
          "Volumes"
        ],
        "summary": "Detach Volume",
        "description": "Detaches a volume template from all application containers.",
        "operationId": "DetachVolume",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "volumeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-data-volume"
          }
        ],
        "responses": {
          "200": {
            "description": "Volume was detached from the application.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DetachVolumeResponse"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Application or volume template not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          }
        }
      }
    },
    "/apps/{appId}/volumes/{volumeId}/instances/{instanceId}": {
      "delete": {
        "tags": [
          "Volumes"
        ],
        "summary": "Delete Volume Instance",
        "description": "Deletes a specific volume instance. The volume must be detached before deletion.",
        "operationId": "DeleteVolumeInstance",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "volumeId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "my-data-volume"
          },
          {
            "name": "instanceId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Volume instance was deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteVolumeInstanceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad request due to invalid state or constraints.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "404": {
            "description": "Volume template or instance not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "500": {
            "description": "Unexpected server error.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorDetails"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized."
          }
        }
      }
    },
    "/log/forwarding": {
      "get": {
        "tags": [
          "Log Forwarding"
        ],
        "summary": "List log-forwarding configurations",
        "description": "Get a list of all log-forwarding configurations for the authenticated user.",
        "responses": {
          "200": {
            "description": "List of log-forwarding configurations retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListLogForwardingResponse"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized."
          },
          "500": {
            "description": "Unexpected server error."
          }
        }
      },
      "post": {
        "tags": [
          "Log Forwarding"
        ],
        "summary": "Create log forwarding configuration",
        "description": "Create a new log forwarding configuration.",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLogForwardingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Log-forwarding configuration created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogForwardingConfiguration"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input."
          },
          "401": {
            "description": "User is unauthorized."
          },
          "500": {
            "description": "Unexpected server error."
          }
        }
      }
    },
    "/log/forwarding/{appId}": {
      "get": {
        "tags": [
          "Log Forwarding"
        ],
        "summary": "Get log-forwarding configuration",
        "description": "Get a specific log-forwarding configuration by ID.",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "App ID for log forwarding configuration.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Log-forwarding configuration retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogForwardingConfiguration"
                }
              }
            }
          },
          "401": {
            "description": "User is unauthorized."
          },
          "404": {
            "description": "Log-forwarding configuration not found."
          },
          "500": {
            "description": "Unexpected server error."
          }
        }
      },
      "put": {
        "tags": [
          "Log Forwarding"
        ],
        "summary": "Update log-forwarding configuration",
        "description": "Update an existing log-forwarding configuration.",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "App ID for log forwarding configuration.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLogForwardingRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Log-forwarding configuration updated successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LogForwardingConfiguration"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input."
          },
          "403": {
            "description": "User is unauthorized."
          },
          "404": {
            "description": "Log-forwarding configuration not found."
          },
          "500": {
            "description": "Unexpected server error."
          }
        }
      },
      "delete": {
        "tags": [
          "Log Forwarding"
        ],
        "summary": "Delete log-forwarding configuration",
        "description": "Delete a log-forwarding configuration.",
        "parameters": [
          {
            "name": "appId",
            "in": "path",
            "description": "App ID for log forwarding configuration.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Log-forwarding configuration deleted successfully."
          },
          "401": {
            "description": "User is unauthorized."
          },
          "404": {
            "description": "Log-forwarding configuration not found."
          },
          "500": {
            "description": "Unexpected server error."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AddApplicationRequest": {
        "required": [
          "autoScaling",
          "name",
          "regionSettings",
          "runtimeType"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "[A-Za-z0-9-\\s]+",
            "type": "string"
          },
          "runtimeType": {
            "$ref": "#/components/schemas/ApplicationRuntimeType"
          },
          "terminationGracePeriodSeconds": {
            "maximum": 300,
            "minimum": 1,
            "type": "integer",
            "format": "int64"
          },
          "repositorySettings": {
            "$ref": "#/components/schemas/RepositorySettings"
          },
          "autoScaling": {
            "$ref": "#/components/schemas/AutoscalingSettings"
          },
          "regionSettings": {
            "$ref": "#/components/schemas/UpdateRegionSettingsRequest"
          },
          "containerTemplates": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerRequest"
            }
          },
          "volumes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "AddApplicationResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "AddContainerRequest": {
        "required": [
          "imageName",
          "imageNamespace",
          "imageRegistryId",
          "imageTag",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "image": {
            "type": "string",
            "nullable": true
          },
          "imageName": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string"
          },
          "imageNamespace": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string"
          },
          "imageTag": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[._-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string"
          },
          "imageDigest": {
            "pattern": "sha256:[a-z0-9]{64}",
            "type": "string",
            "nullable": true
          },
          "imageRegistryId": {
            "minLength": 1,
            "type": "string"
          },
          "imagePullPolicy": {
            "$ref": "#/components/schemas/ImagePullPolicy"
          },
          "entryPoint": {
            "$ref": "#/components/schemas/ContainerEntryPoint"
          },
          "probes": {
            "$ref": "#/components/schemas/ContainerProbes"
          },
          "environmentVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvironmentVariable"
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointRequest"
            }
          },
          "volumeMounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeMountRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "AnycastEndpointRequest": {
        "required": [
          "portMappings",
          "type"
        ],
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/AnycastIpProtocolVersion"
          },
          "portMappings": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerPortMappingRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "AnycastIpProtocolVersion": {
        "enum": [
          "iPv4"
        ],
        "type": "string"
      },
      "AppListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "displayEndpoint": {
            "$ref": "#/components/schemas/DisplayEndpoint"
          },
          "status": {
            "$ref": "#/components/schemas/ApplicationStatus"
          }
        },
        "additionalProperties": false,
        "description": "Application list item model"
      },
      "Application": {
        "required": [
          "containerInstances",
          "containerTemplates",
          "id",
          "name",
          "regionSettings",
          "runtimeType",
          "status",
          "volumes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "displayEndpoint": {
            "$ref": "#/components/schemas/DisplayEndpoint"
          },
          "status": {
            "$ref": "#/components/schemas/ApplicationStatus"
          },
          "runtimeType": {
            "$ref": "#/components/schemas/ApplicationRuntimeType"
          },
          "regionSettings": {
            "$ref": "#/components/schemas/RegionSettings"
          },
          "containerTemplates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerTemplate"
            }
          },
          "containerInstances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerInstance"
            }
          },
          "volumes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeTemplate"
            }
          },
          "autoScaling": {
            "$ref": "#/components/schemas/AutoscalingSettings"
          },
          "networkSettings": {
            "$ref": "#/components/schemas/NetworkLimits"
          },
          "repositorySettings": {
            "$ref": "#/components/schemas/RepositorySettings"
          }
        },
        "additionalProperties": false,
        "description": "Application model"
      },
      "ApplicationRuntimeType": {
        "enum": [
          "shared",
          "reserved"
        ],
        "type": "string"
      },
      "ApplicationStatus": {
        "enum": [
          "unknown",
          "active",
          "progressing",
          "inactive",
          "failing",
          "suspended"
        ],
        "type": "string"
      },
      "AutoscalingSettings": {
        "required": [
          "max",
          "min"
        ],
        "type": "object",
        "properties": {
          "min": {
            "maximum": 1000,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "example": 1
          },
          "max": {
            "maximum": 1000,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "example": 10
          }
        },
        "additionalProperties": false
      },
      "CdnEndpointRequest": {
        "type": "object",
        "properties": {
          "isSslEnabled": {
            "type": "boolean"
          },
          "stickySessions": {
            "$ref": "#/components/schemas/StickySessionSettings"
          },
          "pullZoneId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "portMappings": {
            "maxItems": 1,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerPortMappingRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "ContainerConfigSuggestions": {
        "type": "object",
        "properties": {
          "endpointSuggestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointRequest"
            }
          },
          "environmentVariablesSuggestions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvironmentVariableSuggestion"
            }
          },
          "appName": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "instructions": {
            "type": "string",
            "nullable": true
          },
          "registryUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContainerEndpoint": {
        "required": [
          "displayName",
          "isSslEnabled",
          "portMappings",
          "publicHost",
          "pullZoneId",
          "type"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "minLength": 1,
            "type": "string"
          },
          "publicHost": {
            "minLength": 1,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/EndpointType"
          },
          "isSslEnabled": {
            "type": "boolean"
          },
          "pullZoneId": {
            "minLength": 1,
            "type": "string"
          },
          "portMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointPortMapping"
            }
          },
          "stickySessions": {
            "$ref": "#/components/schemas/EndpointStickySession"
          },
          "internalIpAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointInternalIp"
            },
            "nullable": true
          },
          "publicIpAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointInternalIp"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Container endpoint model"
      },
      "ContainerEntryPoint": {
        "type": "object",
        "properties": {
          "command": {
            "type": "string",
            "nullable": true
          },
          "commandArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "arguments": {
            "type": "string",
            "nullable": true
          },
          "argumentsArray": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "workingDirectory": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContainerImage": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "namespace": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ContainerImageTag": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ContainerInstance": {
        "required": [
          "id",
          "nodeIpAddress",
          "podId",
          "templateId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "templateId": {
            "minLength": 1,
            "type": "string"
          },
          "podId": {
            "minLength": 1,
            "type": "string"
          },
          "nodeIpAddress": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ContainerPortMappingRequest": {
        "required": [
          "containerPort"
        ],
        "type": "object",
        "properties": {
          "containerPort": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "exposedPort": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "protocols": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Protocol"
            }
          }
        },
        "additionalProperties": false
      },
      "ContainerProbe": {
        "type": "object",
        "properties": {
          "initialDelaySeconds": {
            "maximum": 3600,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "default": 10,
            "nullable": true
          },
          "periodSeconds": {
            "maximum": 3600,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "default": 10,
            "nullable": true
          },
          "timeoutSeconds": {
            "maximum": 3600,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "default": 7,
            "nullable": true
          },
          "failureThreshold": {
            "maximum": 1000,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "default": 3,
            "nullable": true
          },
          "successThreshold": {
            "maximum": 1000,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "default": 1,
            "nullable": true
          },
          "httpGet": {
            "$ref": "#/components/schemas/HttpGetProbe"
          },
          "tcpSocket": {
            "$ref": "#/components/schemas/TcpSocketProbe"
          },
          "grpc": {
            "$ref": "#/components/schemas/GrpcProbe"
          }
        },
        "additionalProperties": false
      },
      "ContainerProbes": {
        "type": "object",
        "properties": {
          "startup": {
            "$ref": "#/components/schemas/ContainerProbe"
          },
          "readiness": {
            "$ref": "#/components/schemas/ContainerProbe"
          },
          "liveness": {
            "$ref": "#/components/schemas/ContainerProbe"
          }
        },
        "additionalProperties": false
      },
      "ContainerRegistry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "readOnly": true
          },
          "accountId": {
            "type": "string",
            "nullable": true
          },
          "userId": {
            "type": "string",
            "nullable": true
          },
          "namespaceId": {
            "type": "string"
          },
          "displayName": {
            "type": "string"
          },
          "hostName": {
            "type": "string"
          },
          "userName": {
            "type": "string",
            "nullable": true
          },
          "firstPasswordSymbols": {
            "type": "string",
            "nullable": true
          },
          "lastPasswordSymbols": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "isPublic": {
            "type": "boolean",
            "nullable": true
          },
          "lastUpdatedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ContainerRegistryRequest": {
        "required": [
          "displayName"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "minLength": 1,
            "type": "string",
            "description": "Container registry display name"
          },
          "type": {
            "$ref": "#/components/schemas/RegistryType"
          },
          "passwordCredentials": {
            "$ref": "#/components/schemas/Credentials"
          }
        },
        "additionalProperties": false
      },
      "ContainerRequest": {
        "required": [
          "imageName",
          "imageNamespace",
          "imageRegistryId",
          "imageTag",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Absence of the id means it is a new container. Presence of the id means it is an update of the existing.",
            "nullable": true
          },
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "image": {
            "type": "string",
            "nullable": true
          },
          "imageName": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string"
          },
          "imageNamespace": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string"
          },
          "imageTag": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[._-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string"
          },
          "imageDigest": {
            "pattern": "sha256:[a-z0-9]{64}",
            "type": "string",
            "nullable": true
          },
          "imageRegistryId": {
            "minLength": 1,
            "type": "string"
          },
          "imagePullPolicy": {
            "$ref": "#/components/schemas/ImagePullPolicy"
          },
          "entryPoint": {
            "$ref": "#/components/schemas/ContainerEntryPoint"
          },
          "probes": {
            "$ref": "#/components/schemas/ContainerProbes"
          },
          "environmentVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvironmentVariable"
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointRequest"
            }
          },
          "volumeMounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeMountRequest"
            }
          }
        },
        "additionalProperties": false
      },
      "ContainerStatus": {
        "enum": [
          "notStarted",
          "started",
          "ready"
        ],
        "type": "string"
      },
      "ContainerTemplate": {
        "required": [
          "endpoints",
          "entryPoint",
          "environmentVariables",
          "id",
          "image",
          "imageDigest",
          "imageName",
          "imageNamespace",
          "imagePullPolicy",
          "imageRegistryId",
          "imageTag",
          "name",
          "packageId",
          "probes",
          "volumeMounts"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "packageId": {
            "minLength": 1,
            "type": "string"
          },
          "image": {
            "minLength": 1,
            "type": "string"
          },
          "imageName": {
            "minLength": 1,
            "type": "string"
          },
          "imageNamespace": {
            "minLength": 1,
            "type": "string"
          },
          "imageTag": {
            "minLength": 1,
            "type": "string"
          },
          "imageRegistryId": {
            "minLength": 1,
            "type": "string"
          },
          "imageDigest": {
            "minLength": 1,
            "type": "string"
          },
          "imagePullPolicy": {
            "$ref": "#/components/schemas/ImagePullPolicy"
          },
          "entryPoint": {
            "$ref": "#/components/schemas/ContainerEntryPoint"
          },
          "probes": {
            "$ref": "#/components/schemas/ContainerProbes"
          },
          "environmentVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvironmentVariable"
            }
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerEndpoint"
            }
          },
          "volumeMounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerVolumeMount"
            }
          }
        },
        "additionalProperties": false,
        "description": "Container template model"
      },
      "ContainerVolumeMount": {
        "required": [
          "mountPath",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "mountPath": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "CreateLogForwardingRequest": {
        "required": [
          "app",
          "type",
          "endpoint",
          "port",
          "format",
          "enabled"
        ],
        "type": "object",
        "properties": {
          "app": {
            "type": "string",
            "description": "App unique identifier"
          },
          "type": {
            "enum": [
              "SyslogUdp",
              "SyslogTcp"
            ],
            "type": "string",
            "description": "Log endpoint type"
          },
          "endpoint": {
            "type": "string",
            "description": "Log destination endpoint"
          },
          "port": {
            "type": "integer",
            "description": "Log destination port"
          },
          "token": {
            "type": "string",
            "description": "Token passed as field of syslog"
          },
          "format": {
            "enum": [
              "SyslogRfc3164",
              "SyslogRfc5424"
            ],
            "type": "string",
            "description": "Which Syslog RFC will be used"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether forwarding is enabled"
          }
        }
      },
      "Credentials": {
        "required": [
          "password",
          "userName"
        ],
        "type": "object",
        "properties": {
          "userName": {
            "minLength": 1,
            "type": "string",
            "description": "User name"
          },
          "password": {
            "minLength": 1,
            "type": "string",
            "description": "Password"
          }
        },
        "additionalProperties": false,
        "description": "Password credentials for container registry"
      },
      "DataGranularity": {
        "enum": [
          "Daily",
          "Hourly",
          "Minute"
        ],
        "type": "string"
      },
      "DeleteAllVolumeInstancesResponse": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "DeleteVolumeInstanceResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "DeploymentStatus": {
        "enum": [
          "unknown",
          "active",
          "progressing",
          "inactive",
          "failing"
        ],
        "type": "string"
      },
      "DetachVolumeResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "DisplayEndpoint": {
        "required": [
          "address",
          "id",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "address": {
            "minLength": 1,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/EndpointType"
          }
        },
        "additionalProperties": false,
        "description": "Display endpoint model"
      },
      "DoubleStatusIndicator": {
        "type": "object",
        "properties": {
          "indicator": {
            "type": "number",
            "format": "double"
          },
          "statusGrade": {
            "$ref": "#/components/schemas/Grade"
          }
        },
        "additionalProperties": false,
        "description": "Status grade model"
      },
      "EndpointInternalIp": {
        "required": [
          "address",
          "region"
        ],
        "type": "object",
        "properties": {
          "address": {
            "minLength": 1,
            "type": "string"
          },
          "region": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EndpointListItem": {
        "required": [
          "containerId",
          "containerName",
          "displayName",
          "id",
          "isSslEnabled",
          "portMappings",
          "publicHost",
          "pullZoneId",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string"
          },
          "displayName": {
            "minLength": 1,
            "type": "string"
          },
          "publicHost": {
            "minLength": 1,
            "type": "string"
          },
          "type": {
            "$ref": "#/components/schemas/EndpointType"
          },
          "isSslEnabled": {
            "type": "boolean"
          },
          "pullZoneId": {
            "minLength": 1,
            "type": "string"
          },
          "portMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointPortMapping"
            }
          },
          "containerName": {
            "minLength": 1,
            "type": "string"
          },
          "containerId": {
            "minLength": 1,
            "type": "string"
          },
          "stickySessions": {
            "$ref": "#/components/schemas/EndpointStickySession"
          },
          "internalIpAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointInternalIp"
            },
            "nullable": true
          },
          "publicIpAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointInternalIp"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Endpoint list item model"
      },
      "EndpointPortMapping": {
        "required": [
          "containerPort",
          "exposedPort",
          "protocols"
        ],
        "type": "object",
        "properties": {
          "containerPort": {
            "type": "integer",
            "format": "int32"
          },
          "exposedPort": {
            "type": "integer",
            "format": "int32"
          },
          "protocols": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProtocolV3"
            }
          }
        },
        "additionalProperties": false
      },
      "EndpointRequest": {
        "required": [
          "displayName"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "cdn": {
            "$ref": "#/components/schemas/CdnEndpointRequest"
          },
          "anycast": {
            "$ref": "#/components/schemas/AnycastEndpointRequest"
          }
        },
        "additionalProperties": false
      },
      "EndpointStickySession": {
        "required": [
          "cookieName",
          "enabled",
          "sessionHeaders"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "sessionHeaders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cookieName": {
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EndpointType": {
        "enum": [
          "cdn",
          "anycast",
          "publicIp"
        ],
        "type": "string"
      },
      "EnvironmentVariable": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EnvironmentVariableSuggestion": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "defaultValue": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "required": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ErrorDetails": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "A short, human-readable summary of the problem type.",
            "readOnly": true
          },
          "status": {
            "type": "integer",
            "description": "The HTTP status code.",
            "format": "int32",
            "readOnly": true
          },
          "detail": {
            "type": "string",
            "description": "A human-readable explanation specific to this occurrence of the problem.",
            "nullable": true,
            "readOnly": true
          },
          "instance": {
            "type": "string",
            "description": "A URI reference that identifies the specific occurrence of the problem.",
            "nullable": true,
            "readOnly": true
          },
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "description": "Additional validation errors for field-specific issues.",
            "nullable": true,
            "readOnly": true
          },
          "id": {
            "type": "string",
            "description": "The application ID, returned as an RFC 7807 extension field when relevant (e.g. partial save errors).\nMatches the \"id\" field from successful create response for consistency.",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "RFC 7807 Problem Details response model."
      },
      "GetContainerConfigSuggestionsRequest": {
        "required": [
          "imageName",
          "imageNamespace",
          "registryId",
          "tag"
        ],
        "type": "object",
        "properties": {
          "registryId": {
            "minLength": 1,
            "type": "string",
            "description": "The registry identifier. Can be \"dockerhub\", \"github\", or a private registry ID."
          },
          "imageName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "imageNamespace": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "tag": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "GetContainerImageDigestByTagRequest": {
        "required": [
          "imageName",
          "imageNamespace",
          "registryId",
          "tag"
        ],
        "type": "object",
        "properties": {
          "registryId": {
            "minLength": 1,
            "type": "string",
            "description": "The registry identifier. Can be \"dockerhub\", \"github\", or a private registry ID."
          },
          "imageName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "imageNamespace": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "tag": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Grade": {
        "enum": [
          "couldBeBetter",
          "notBad",
          "doingGreat"
        ],
        "type": "string"
      },
      "GrpcProbe": {
        "type": "object",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/GrpcProbeRequestDetails"
          }
        },
        "additionalProperties": false
      },
      "GrpcProbeRequestDetails": {
        "type": "object",
        "properties": {
          "portNumber": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          },
          "serviceName": {
            "type": "string",
            "description": "If this is not specified, the default behavior is to probe the server's overall health status.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HttpGetProbe": {
        "type": "object",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/HttpGetProbeRequestDetails"
          },
          "response": {
            "$ref": "#/components/schemas/HttpGetProbeResponseDetails"
          }
        },
        "additionalProperties": false
      },
      "HttpGetProbeRequestDetails": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string"
          },
          "portNumber": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "HttpGetProbeResponseDetails": {
        "type": "object",
        "properties": {
          "expectedStatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          }
        },
        "additionalProperties": false
      },
      "HttpStatusCode": {
        "enum": [
          "continue",
          "switchingProtocols",
          "processing",
          "earlyHints",
          "ok",
          "created",
          "accepted",
          "nonAuthoritativeInformation",
          "noContent",
          "resetContent",
          "partialContent",
          "multiStatus",
          "alreadyReported",
          "imUsed",
          "multipleChoices",
          "movedPermanently",
          "found",
          "seeOther",
          "notModified",
          "useProxy",
          "unused",
          "temporaryRedirect",
          "permanentRedirect",
          "badRequest",
          "unauthorized",
          "paymentRequired",
          "forbidden",
          "notFound",
          "methodNotAllowed",
          "notAcceptable",
          "proxyAuthenticationRequired",
          "requestTimeout",
          "conflict",
          "gone",
          "lengthRequired",
          "preconditionFailed",
          "requestEntityTooLarge",
          "requestUriTooLong",
          "unsupportedMediaType",
          "requestedRangeNotSatisfiable",
          "expectationFailed",
          "misdirectedRequest",
          "unprocessableEntity",
          "locked",
          "failedDependency",
          "upgradeRequired",
          "preconditionRequired",
          "tooManyRequests",
          "requestHeaderFieldsTooLarge",
          "unavailableForLegalReasons",
          "internalServerError",
          "notImplemented",
          "badGateway",
          "serviceUnavailable",
          "gatewayTimeout",
          "httpVersionNotSupported",
          "variantAlsoNegotiates",
          "insufficientStorage",
          "loopDetected",
          "notExtended",
          "networkAuthenticationRequired"
        ],
        "type": "string"
      },
      "ImagePullPolicy": {
        "enum": [
          "always",
          "ifNotPresent"
        ],
        "type": "string"
      },
      "ImageTagInfo": {
        "type": "object",
        "properties": {
          "imageNamespace": {
            "type": "string"
          },
          "image": {
            "type": "string"
          },
          "tag": {
            "type": "string"
          },
          "digest": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "Int32StatusIndicator": {
        "type": "object",
        "properties": {
          "indicator": {
            "type": "integer",
            "format": "int32"
          },
          "statusGrade": {
            "$ref": "#/components/schemas/Grade"
          }
        },
        "additionalProperties": false,
        "description": "Status grade model"
      },
      "ListApplicationsResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AppListItem"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          },
          "cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "List applications response"
      },
      "ListContainerImageTagsRequest": {
        "required": [
          "imageName",
          "imageNamespace",
          "registryId"
        ],
        "type": "object",
        "properties": {
          "registryId": {
            "minLength": 1,
            "type": "string",
            "description": "The registry identifier. Can be \"dockerhub\", \"github\", or a private registry ID."
          },
          "imageName": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "imageNamespace": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ListContainerImagesRequest": {
        "required": [
          "registryId"
        ],
        "type": "object",
        "properties": {
          "registryId": {
            "minLength": 1,
            "type": "string",
            "description": "The registry identifier. Can be \"dockerhub\", \"github\", or a private registry ID."
          }
        },
        "additionalProperties": false
      },
      "ListContainerRegistriesResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerRegistry"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          },
          "cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListEndpointsResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointListItem"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          },
          "cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "List endpoints response"
      },
      "ListLogForwardingResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LogForwardingConfiguration"
            }
          }
        }
      },
      "ListMeta": {
        "type": "object",
        "properties": {
          "totalItems": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "ListNodesResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          },
          "cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListRegionsResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Region"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          },
          "cursor": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListVolumesResponse": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeInList"
            }
          },
          "meta": {
            "$ref": "#/components/schemas/ListMeta"
          },
          "cursor": {
            "type": "string",
            "nullable": true
          },
          "summary": {
            "$ref": "#/components/schemas/ListVolumesSummary"
          }
        },
        "additionalProperties": false,
        "description": "List volumes response"
      },
      "ListVolumesSummary": {
        "type": "object",
        "properties": {
          "totalPods": {
            "type": "integer",
            "format": "int32"
          },
          "totalContainers": {
            "type": "integer",
            "format": "int32"
          },
          "totalStorage": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "LogForwardingConfiguration": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier"
          },
          "app": {
            "type": "string",
            "description": "App unique identifier"
          },
          "productId": {
            "type": "string",
            "description": "Product unique identifier"
          },
          "type": {
            "enum": [
              "SyslogUdp",
              "SyslogTcp"
            ],
            "type": "string",
            "description": "Log endpoint type"
          },
          "endpoint": {
            "type": "string",
            "description": "Log destination endpoint"
          },
          "port": {
            "type": "integer",
            "description": "Log destination port"
          },
          "createdAt": {
            "type": "string",
            "description": "When the configuration was created",
            "format": "date-time"
          },
          "token": {
            "type": "string",
            "description": "Token passed as field of syslog"
          },
          "format": {
            "enum": [
              "SyslogRfc3164",
              "SyslogRfc5424"
            ],
            "type": "string",
            "description": "Which Syslog RFC will be used"
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether forwarding is enabled"
          }
        }
      },
      "NetworkLimits": {
        "type": "object",
        "properties": {
          "ingressBandwidthLimit": {
            "type": "integer",
            "format": "int64"
          },
          "egressBandwidthLimit": {
            "type": "integer",
            "format": "int64"
          }
        },
        "additionalProperties": false
      },
      "OptimalBaseRegionResponse": {
        "type": "object",
        "properties": {
          "region": {
            "$ref": "#/components/schemas/Region"
          }
        },
        "additionalProperties": false
      },
      "Overview": {
        "type": "object",
        "properties": {
          "targetLatency": {
            "$ref": "#/components/schemas/DoubleStatusIndicator"
          },
          "currentLatency": {
            "$ref": "#/components/schemas/DoubleStatusIndicator"
          },
          "activeRegions": {
            "$ref": "#/components/schemas/Int32StatusIndicator"
          },
          "activeInstances": {
            "$ref": "#/components/schemas/Int32StatusIndicator"
          },
          "desiredInstances": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/ApplicationStatus"
          },
          "averageCPU": {
            "$ref": "#/components/schemas/DoubleStatusIndicator"
          },
          "averageRAM": {
            "$ref": "#/components/schemas/DoubleStatusIndicator"
          },
          "averageVolumesUsage": {
            "$ref": "#/components/schemas/DoubleStatusIndicator"
          },
          "regions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OverviewRegion"
            }
          },
          "averageLatency": {
            "type": "number",
            "format": "double"
          },
          "totalVolumeSizeInGb": {
            "type": "number",
            "format": "double"
          },
          "monthlyCost": {
            "type": "number",
            "format": "double"
          },
          "latencyChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          }
        },
        "additionalProperties": false,
        "description": "Application overview model"
      },
      "OverviewContainer": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "cpuUsage": {
            "type": "number",
            "format": "double"
          },
          "ramUsage": {
            "type": "number",
            "format": "double"
          },
          "reason": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/ContainerStatus"
          },
          "image": {
            "type": "string",
            "nullable": true
          },
          "imageDisplay": {
            "type": "string",
            "nullable": true
          },
          "numberOfRestarts": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "exitCode": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Overview container model"
      },
      "OverviewPod": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/PodStatus"
          },
          "lastHeartBeat": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "outboundTrafficChart": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            },
            "nullable": true
          },
          "cpuUsage": {
            "type": "number",
            "format": "double"
          },
          "ramUsage": {
            "type": "number",
            "format": "double"
          },
          "containers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OverviewContainer"
            }
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "volumesUtilizationPercentage": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "ephemeralStorageUsageBytes": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "ephemeralStorageLimitBytes": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "ephemeralStorageUsageRatio": {
            "type": "number",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Overview pod model"
      },
      "OverviewRegion": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string"
          },
          "isRequired": {
            "type": "boolean"
          },
          "instances": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/DeploymentStatus"
          },
          "averageCPU": {
            "type": "number",
            "format": "double"
          },
          "averageRAM": {
            "type": "number",
            "format": "double"
          },
          "averageVolumesUsagePercentage": {
            "type": "number",
            "format": "double"
          },
          "requests": {
            "type": "number",
            "format": "double"
          },
          "anycastTraffic": {
            "type": "number",
            "format": "double"
          },
          "pods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/OverviewPod"
            }
          }
        },
        "additionalProperties": false,
        "description": "Overview region model"
      },
      "PatchApplicationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "pattern": "[A-Za-z0-9-\\s]+",
            "type": "string",
            "nullable": true
          },
          "runtimeType": {
            "$ref": "#/components/schemas/ApplicationRuntimeType"
          },
          "autoScaling": {
            "$ref": "#/components/schemas/AutoscalingSettings"
          },
          "regionSettings": {
            "$ref": "#/components/schemas/UpdateRegionSettingsRequest"
          },
          "containerTemplates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ContainerRequest"
            },
            "nullable": true
          },
          "volumes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PatchContainerRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "nullable": true
          },
          "image": {
            "type": "string",
            "nullable": true
          },
          "imageName": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string",
            "nullable": true
          },
          "imageNamespace": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[./_-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string",
            "nullable": true
          },
          "imageTag": {
            "minLength": 1,
            "pattern": "[a-zA-Z0-9]+(?:[._-]{1,2}[a-zA-Z0-9]+)*",
            "type": "string",
            "nullable": true
          },
          "imageDigest": {
            "pattern": "sha256:[a-z0-9]{64}",
            "type": "string",
            "nullable": true
          },
          "imageRegistryId": {
            "minLength": 1,
            "type": "string",
            "nullable": true
          },
          "imagePullPolicy": {
            "$ref": "#/components/schemas/ImagePullPolicy"
          },
          "entryPoint": {
            "$ref": "#/components/schemas/ContainerEntryPoint"
          },
          "probes": {
            "$ref": "#/components/schemas/ContainerProbes"
          },
          "environmentVariables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EnvironmentVariable"
            },
            "nullable": true
          },
          "endpoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointRequest"
            },
            "nullable": true
          },
          "volumeMounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeMountRequest"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PatchVolumeRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "nullable": true
          },
          "size": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "example": 5
          }
        },
        "additionalProperties": false
      },
      "PodStatus": {
        "enum": [
          "notScheduled",
          "scheduled",
          "ready",
          "deleting"
        ],
        "type": "string"
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "Protocol": {
        "enum": [
          "tcp",
          "udp",
          "sctp"
        ],
        "type": "string"
      },
      "ProtocolV3": {
        "enum": [
          "tcp",
          "udp",
          "sctp"
        ],
        "type": "string"
      },
      "Region": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "group": {
            "type": "string"
          },
          "hasAnycastSupport": {
            "type": "boolean"
          },
          "hasCapacity": {
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Region model"
      },
      "RegionProvisioningType": {
        "enum": [
          "static",
          "dynamic"
        ],
        "type": "string"
      },
      "RegionSettings": {
        "required": [
          "allowedRegionIds",
          "requiredRegionIds"
        ],
        "type": "object",
        "properties": {
          "allowedRegionIds": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "DE",
              "UK",
              "US"
            ]
          },
          "requiredRegionIds": {
            "uniqueItems": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [
              "DE"
            ]
          },
          "maxAllowedRegions": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "provisioningType": {
            "$ref": "#/components/schemas/RegionProvisioningType"
          }
        },
        "additionalProperties": false,
        "description": "Region settings model"
      },
      "RegistryType": {
        "enum": [
          "dockerHub",
          "gitHub"
        ],
        "type": "string"
      },
      "RemoveContainerRegistryResponseStatus": {
        "enum": [
          "notFound",
          "inUse",
          "removed"
        ],
        "type": "string"
      },
      "RemoveContainerRegistryResult": {
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/RemoveContainerRegistryResponseStatus"
          },
          "applications": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RepositorySettings": {
        "type": "object",
        "properties": {
          "templateRepository": {
            "type": "string",
            "nullable": true
          },
          "repositoryName": {
            "type": "string",
            "nullable": true
          },
          "owner": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SaveContainerRegistryResult": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "error": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/SavedContainerRegistryStatus"
          }
        },
        "additionalProperties": false
      },
      "SaveEndpointResponse": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "SavedContainerRegistryStatus": {
        "enum": [
          "saved",
          "secretsValidationFailed",
          "unknownErrorOccured",
          "notFound",
          "invalidInput"
        ],
        "type": "string"
      },
      "SearchPublicContainerImagesRequest": {
        "required": [
          "prefix",
          "registryId"
        ],
        "type": "object",
        "properties": {
          "registryId": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "The registry identifier. Can be \"dockerhub\", \"github\", or a private registry ID."
          },
          "prefix": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string"
          },
          "size": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "example": 5
          },
          "page": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "Statistics": {
        "type": "object",
        "properties": {
          "targetLatencyChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "activeRegionsChart": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          "latencyChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "instancesChart": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int64",
              "nullable": true
            }
          },
          "cpuUsageChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "ramUsageChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "trafficChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "volumesSplitUsageChart": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "number",
                "format": "double"
              }
            }
          },
          "volumesSplitCapacityChart": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "number",
                "format": "double"
              }
            }
          },
          "volumesUsageChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "volumesCapacityChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          }
        },
        "additionalProperties": false
      },
      "StickySessionSettings": {
        "required": [
          "sessionHeaders"
        ],
        "type": "object",
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "sessionHeaders": {
            "maxItems": 3,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cookieName": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "TcpSocketProbe": {
        "type": "object",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/TcpSocketProbeRequestDetails"
          }
        },
        "additionalProperties": false
      },
      "TcpSocketProbeRequestDetails": {
        "type": "object",
        "properties": {
          "portNumber": {
            "maximum": 65535,
            "minimum": 1,
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "UpdateRegionSettingsRequest": {
        "type": "object",
        "properties": {
          "allowedRegionIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "example": [
              "DE",
              "UK",
              "US"
            ]
          },
          "requiredRegionIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "example": [
              "DE"
            ]
          },
          "maxAllowedRegions": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "nodeSelectors": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "UpdateVolumeResponse": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "size": {
            "type": "number",
            "format": "double",
            "example": 5
          }
        },
        "additionalProperties": false
      },
      "UsageSummary": {
        "type": "object",
        "properties": {
          "averageLatency": {
            "type": "number",
            "format": "double"
          },
          "currentLatency": {
            "type": "number",
            "format": "double"
          },
          "totalVolumeSizeInGb": {
            "type": "number",
            "format": "double"
          },
          "monthlyCost": {
            "type": "number",
            "format": "double"
          },
          "latencyChart": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            }
          },
          "status": {
            "$ref": "#/components/schemas/ApplicationStatus"
          }
        },
        "additionalProperties": false
      },
      "UserLimits": {
        "type": "object",
        "properties": {
          "maxNumberOfApplications": {
            "type": "integer",
            "format": "int32"
          },
          "existingNumberOfApplications": {
            "type": "integer",
            "format": "int32"
          },
          "maxNumberOfRegionsPerApplication": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxNumberOfInstancesPerRegion": {
            "type": "integer",
            "format": "int32"
          },
          "maxNumberOfInstancesPerApplication": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "maxNumberOfVolumesPerApplication": {
            "type": "integer",
            "format": "int32"
          },
          "maxVolumeSize": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ValidationError": {
        "required": [
          "message"
        ],
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VolumeInList": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "size": {
            "type": "number",
            "format": "double",
            "example": 5
          },
          "totalUsage": {
            "type": "number",
            "format": "double"
          },
          "totalInstancesCount": {
            "type": "integer",
            "format": "int32"
          },
          "attachedInstancesCount": {
            "type": "integer",
            "format": "int32"
          },
          "containersCount": {
            "type": "integer",
            "format": "int32"
          },
          "volumeInstances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VolumeInstance"
            }
          }
        },
        "additionalProperties": false,
        "description": "Volume list item model"
      },
      "VolumeInstance": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "attachedPods": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "attachedContainers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "type": "string"
          },
          "status": {
            "$ref": "#/components/schemas/VolumeStatus"
          },
          "size": {
            "type": "number",
            "format": "double",
            "example": 5
          },
          "usage": {
            "type": "number",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Volume instance model"
      },
      "VolumeMountRequest": {
        "required": [
          "mountPath",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "mountPath": {
            "minLength": 1,
            "pattern": "^/(?!.*//)(?!.*\\.\\.)(?!.*\\s)([a-zA-Z0-9._-]+/?)+$",
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VolumeRequest": {
        "required": [
          "name",
          "size"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string"
          },
          "size": {
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "format": "int32",
            "example": 5
          }
        },
        "additionalProperties": false
      },
      "VolumeStatus": {
        "enum": [
          "unknown",
          "attached",
          "detached",
          "extending",
          "deleting",
          "creating",
          "notScheduled",
          "scheduled",
          "failed"
        ],
        "type": "string"
      },
      "VolumeTemplate": {
        "required": [
          "name",
          "size"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "size": {
            "type": "number",
            "format": "double",
            "example": 5
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "AccessKey": {
        "type": "apiKey",
        "description": "Please enter a valid personal API key.",
        "name": "AccessKey",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "AccessKey": [ ]
    }
  ]
}