> ## Documentation Index > Fetch the complete documentation index at: https://kb.vastdata.com/llms.txt > Use this file to discover all available pages before exploring further. # Partially Update Pipeline by ID ## OpenAPI ````json PATCH /pipelines/{guid} { "openapi": "3.0.3", "info": { "title": "VAST DataEngine API", "description": "Combined OpenAPI specification for Document360: Provisioning, Telemetries Query, Telemetries Collector, and shared common components.", "version": "1.4.0" }, "servers": [ { "url": "http://localhost:3000", "description": "Provisioning Service (Local development server)" }, { "url": "http://localhost:8080/query_telemetries", "description": "Telemetries Query Service (Local development server)" }, { "url": "http://localhost:8080/telemetries", "description": "Telemetries Collector Service (Local development server)" } ], "tags": [ { "name": "Provisioning Service v1.4.0", "description": "Provisioning Service API" }, { "name": "Provisioning Service v1.4.0 > dataEngine", "description": "Data Engine lifecycle" }, { "name": "Provisioning Service v1.4.0 > setup_provisioning", "description": "Deprecated provisioning setup" }, { "name": "Provisioning Service v1.4.0 > pipelines", "description": "Pipelines" }, { "name": "Provisioning Service v1.4.0 > pipelineRevisions", "description": "Pipeline revisions" }, { "name": "Provisioning Service v1.4.0 > functions", "description": "Functions" }, { "name": "Provisioning Service v1.4.0 > functionRevisions", "description": "Function revisions" }, { "name": "Provisioning Service v1.4.0 > functionRevisionsDeprecated", "description": "Deprecated function revision endpoints" }, { "name": "Provisioning Service v1.4.0 > triggers", "description": "Triggers" }, { "name": "Provisioning Service v1.4.0 > topics", "description": "Topics" }, { "name": "Provisioning Service v1.4.0 > containerRegistries", "description": "Container registries" }, { "name": "Provisioning Service v1.4.0 > kubernetesClusters", "description": "Kubernetes clusters" }, { "name": "Provisioning Service v1.4.0 > kubernetesSecrets", "description": "Kubernetes secrets" }, { "name": "Provisioning Service v1.4.0 > mtlsAuthenticationCredentials", "description": "mTLS authentication credentials" }, { "name": "Provisioning Service v1.4.0 > dashboard", "description": "Dashboard" }, { "name": "Provisioning Service v1.4.0 > reports", "description": "Saved reports" }, { "name": "Telemetries Collector Service v1.4.0", "description": "API for collecting OTEL signals (traces, logs and metrics)" }, { "name": "Telemetries Collector Service v1.4.0 > collect_telemetries", "description": "Collect OTEL signals" }, { "name": "Telemetries Query Service v1.4.0", "description": "API for querying traces, logs and metrics" }, { "name": "Telemetries Query Service v1.4.0 > query_telemetries", "description": "Query traces and logs" }, { "name": "Telemetries Query Service v1.4.0 > metrics", "description": "Query metrics" }, { "name": "Telemetries Query Service v1.4.0 > reports", "description": "Saved reports" } ], "paths": { "/pipelines/{guid}": { "parameters": [ { "$ref": "#/components/parameters/GUID" } ], "patch": { "summary": "Partially Update Pipeline by ID", "operationId": "partialUpdatePipelineById", "tags": [ "Provisioning Service v1.4.0 > pipelines" ], "requestBody": { "required": "true", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PipelineUpdate" } } } }, "responses": { "200": { "description": "The updated Pipeline", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Pipeline" } } } }, "400": { "$ref": "#/components/responses/BadRequestError" }, "401": { "$ref": "#/components/responses/UnauthorizedError" }, "403": { "$ref": "#/components/responses/ForbiddenError" }, "404": { "$ref": "#/components/responses/NotFoundError" }, "409": { "$ref": "#/components/responses/ConflictError" }, "422": { "$ref": "#/components/responses/ValidationError" }, "500": { "$ref": "#/components/responses/InternalServerError" } } } } }, "components": { "parameters": { "GUID": { "name": "guid", "in": "path", "required": "true", "schema": { "type": "string" } } }, "schemas": { "PipelineUpdate": { "allOf": [ { "$ref": "#/components/schemas/ResourceUpdate" }, { "type": "object", "properties": { "kubernetes_cluster_vrn": { "$ref": "#/components/schemas/VastRN", "nullable": "true" }, "namespace": { "type": "string", "nullable": "true" }, "manifest": { "$ref": "#/components/schemas/Manifest", "nullable": "true" } } } ] }, "Pipeline": { "allOf": [ { "$ref": "#/components/schemas/Resource" }, { "type": "object", "properties": { "last_revision_number": { "type": "integer", "minimum": "0", "description": "The latest revision number", "example": "69" }, "kubernetes_cluster_vrn": { "$ref": "#/components/schemas/VastRN" }, "namespace": { "type": "string", "description": "The namespace in the kubernetes cluster" }, "status": { "type": "string", "description": "The status of pipeline deployment" }, "reason": { "type": "string", "description": "The reason for status current" } } } ] }, "ResourceUpdate": { "additionalProperties": "false", "type": "object", "properties": { "name": { "type": "string", "description": "A name for the resource.", "example": "naomis-resource" }, "description": { "type": "string", "description": "A description of the resource.", "example": "A good and detailed description that makes everyone understand." }, "tags": { "type": "array", "maxItems": "32", "description": "Custom tags for organizing and categorizing resources in the GUI.", "items": { "type": "string" }, "example": [ "tagA", "tagB", "tagC" ] } }, "description": "Defines a shared group of attributes to be found in all API resources." }, "VastRN": { "type": "string", "description": "A logical path for resource grouping and policy assignment. The structure of the logical path is: vast:dataengine::\nwhere resource type is one of: triggers / functions / pipelines / topics / kubernetes-clusters / container-registries / mtls-authentication-credentials.\n", "example": "vast:dataengine:functions:foo" }, "Manifest": { "type": "object", "properties": { "config": { "$ref": "#/components/schemas/PipelineConfig" }, "triggers": { "$ref": "#/components/schemas/ManifestTriggers" }, "function_deployments": { "$ref": "#/components/schemas/FunctionDeployments" }, "links": { "$ref": "#/components/schemas/ManifestLinks" } }, "example": { "triggers": [ { "name": "trigger1", "vrn": "vast:dataengine:triggers:trigger1" } ], "function_deployments": [ { "name": "function1", "vrn": "vast:dataengine:functions:function1", "revision": "1", "config": { "environment_variables": [ { "name": "TARGET", "value": "function2" } ], "log_level": "INFO", "event_batching": { "batch_max_size": "100", "batch_timeout_ms": "5000" }, "timeout": "60" }, "resources": { "min_concurrency": "1", "max_concurrency": "10", "min_cpu": "100m", "max_cpu": "500m", "min_memory": "128Mi", "max_memory": "256Mi", "timeout": "60" } }, { "name": "function2", "vrn": "vast:functions:function2" } ], "links": [ { "source": [ "trigger1" ], "destination": [ "function1" ], "topic": "vast:dataengine:topics:topic1", "config": { "retries": "3", "events_order": "ordered" }, "conditional_trigger_labels": [ { "triggerLabelName": "logginglevel", "triggerLabelValue": "debug" }, { "triggerLabelName": "errorseverity", "triggerLabelValue": "high" } ] }, { "source": [ "function1" ], "destination": [ "function2" ], "topic": "vast:dataengine:topics:topic2" } ] } }, "Resource": { "allOf": [ { "$ref": "#/components/schemas/ResourceCreate" }, { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/ReadOnlyID" }, "guid": { "$ref": "#/components/schemas/ReadOnlyGUID" }, "tenant_guid": { "$ref": "#/components/schemas/TenantID" }, "owner": { "$ref": "#/components/schemas/UserID" }, "created_at": { "type": "string", "readOnly": "true", "format": "date-time", "description": "Timestamp when the resource was created.", "example": "2024-12-25 15:30:00+00:00" }, "updated_at": { "type": "string", "readOnly": "true", "format": "date-time", "description": "Timestamp when the resource was last updated.", "example": "2024-12-28 18:00:00+00:00" }, "vrn": { "$ref": "#/components/schemas/VastRN" } } } ], "description": "Extends ResourceCreate with read-only fields." }, "ErrorResponse": { "type": "object", "properties": { "detail": { "type": "string" }, "source": { "$ref": "#/components/schemas/ErrorSource" }, "code": { "type": "string", "description": "Optional machine-readable error code for clients to branch on instead of parsing `detail`." } } }, "ValidationErrorResponse": { "type": "object", "properties": { "detail": { "type": "string", "description": "String representation of a mapping between field names and error messages", "example": "{\"url\": \"URL must include a protocol\", \"port\": \"Port must be an integer\"}" } } }, "PipelineConfig": { "allOf": [ { "$ref": "#/components/schemas/BaseManifestConfig" } ] }, "ManifestTriggers": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "vrn": { "$ref": "#/components/schemas/VastRN" } }, "required": [ "name", "vrn" ] } }, "FunctionDeployments": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "maxLength": "40" }, "function_vrn": { "$ref": "#/components/schemas/VastRN" }, "revision": { "type": "integer", "nullable": "true" }, "config": { "$ref": "#/components/schemas/FunctionDeploymentConfig" }, "resources": { "$ref": "#/components/schemas/FunctionDeploymentResources" } }, "required": [ "name", "function_vrn" ] } }, "ManifestLinks": { "description": "Links which define the calling graph of functions in a pipeline. |\nEach of the sources at the source array triggers all function deployments in the destination array |\nif all the labels in the conditional_trigger_labels array are set to the specified values. |\nThe label values are set by the source function handler using the context.set_trigger_labels() method.\n", "type": "array", "items": { "type": "object", "properties": { "source": { "type": "array", "items": { "type": "string" } }, "destination": { "type": "array", "items": { "type": "string" } }, "topic": { "$ref": "#/components/schemas/VastRN" }, "config": { "$ref": "#/components/schemas/LinkConfig" }, "conditional_trigger_labels": { "$ref": "#/components/schemas/LinkConditionalTriggerLabels" } }, "required": [ "source", "destination" ] } }, "ResourceCreate": { "allOf": [ { "$ref": "#/components/schemas/ResourceUpdate" } ], "required": [ "name" ] }, "ReadOnlyID": { "type": "integer", "format": "int64", "readOnly": "true", "description": "A globally unique identifier (ID) for the resource." }, "ReadOnlyGUID": { "type": "string", "readOnly": "true", "format": "uuid", "description": "A globally unique identifier (GUID) for the resource.", "example": "a7f4aa24-a00d-4dc5-a113-2031eb8c2c79" }, "TenantID": { "$ref": "#/components/schemas/ReadOnlyGUID" }, "UserID": { "type": "object", "readOnly": "true", "properties": { "id": { "type": "string", "description": "The unique identifier for the owner." }, "id_type": { "type": "string", "description": "The type of identifier for the owner.", "enum": [ "uid", "vid", "sid", "access_key", "sid_str", "login_name", "username" ] }, "name": { "type": "string", "description": "The presentable name of the owner" } }, "required": [ "id", "id_type" ], "description": "Represents the owner of the resource." }, "ErrorSource": { "type": "object", "description": "Represents the underlying problem that made Data Engine raise the error", "properties": { "source_type": { "type": "string", "description": "The component where the error happened", "example": "kubernetes | vms | vdb | registry" }, "source_name": { "type": "string", "description": "The name of the source compoenent", "example": "my-cluster" }, "inner_error": { "type": "string", "description": "The error message from the source component", "example": "Failed to connect to the cluster" } } }, "BaseManifestConfig": { "type": "object", "properties": { "environment_variables": { "type": "array", "items": { "$ref": "#/components/schemas/EnvironmentVariable" } }, "secrets": { "type": "array", "items": { "type": "string" } } } }, "FunctionDeploymentConfig": { "allOf": [ { "$ref": "#/components/schemas/BaseManifestConfig" }, { "type": "object", "properties": { "event_batching": { "$ref": "#/components/schemas/EventBatchingConfig" }, "log_level": { "type": "string", "enum": [ "NOTSET", "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL" ], "example": "INFO" } }, "example": { "environment_variables": [ { "name": "TARGET", "value": "function2" } ] } } ] }, "FunctionDeploymentResources": { "type": "object", "properties": { "min_concurrency": { "type": "integer", "default": "1", "example": "1" }, "max_concurrency": { "type": "integer", "default": "10", "description": "10" }, "autoscaling_rps_factor": { "type": "integer", "nullable": "true", "example": "2", "deprecated": "true", "description": "Deprecated: This field is no longer used and will be removed in a future version. It is ignored if provided." }, "autoscaling_concurrency_overload_factor": { "type": "string", "nullable": "true", "example": "0.05", "pattern": "^(0|[1-9]\\d*)(\\.\\d+)?$", "deprecated": "true", "description": "Deprecated: Use 'autoscaling' field instead with type='kpa_concurrency'.\n\nAutoscaling concurrency overload factor (> 0.0). Determines when to scale based on \nconcurrency overload beyond current processing capacity. When concurrency exceeds \n(capacity * (1 + overload_factor)), new function instances are created.\n\nFor backward compatibility, if this field is set and 'autoscaling' is not provided,\nconcurrency metric autoscaling will be used with target_utilization_percentage calculated\nfrom this value.\n\nDefault: \"0.05\" (5% overload tolerance)\n" }, "autoscaling": { "$ref": "#/components/schemas/AutoscalingConfig" }, "num_workers": { "type": "integer", "minimum": "1", "maximum": "100", "default": "20", "description": "Number of worker threads per function instance. \nWhen event batching is enabled, the effective concurrency per instance is \nnum_workers * batch_max_size, since each worker processes one batch at a time.\nDefault: 20 (matches the default Python runtime worker threads)\nMaximum: 100\n", "example": "20" }, "max_concurrent_requests_limit": { "type": "integer", "minimum": "0", "description": "Maximum number of concurrent requests the function can handle per instance.\nThis represents how many requests can be processed simultaneously (in-flight)\nby a single function instance. Maps to Knative `spec.containerConcurrency`.\n\nIf omitted, the value is computed at deploy time as\n`max(num_workers, batch_max_size)` (defaults: `max(20, 1) = 20`).\nThis ensures the queue-proxy enforces backpressure per pod so the\nautoscaler can scale out instead of all traffic piling on a single pod.\n\nSet explicitly to `0` for unlimited per-pod concurrency (queue-proxy\ndoes not throttle). Use with caution: with `0` the autoscaler cannot\nobserve queue pressure and may keep traffic on a single instance.\n\nSetting this value below the actual function capacity will hurt performance.\nSet ONLY if you know an upper bound for the capacity; this applies\nbackpressure on a loaded function instance and waits for autoscale\ninstead of queueing requests, which can tune performance and avoid\ntimed-out requests in the queue and retries.\n", "example": "100" }, "min_cpu": { "type": "string", "default": "100m", "example": "100m" }, "max_cpu": { "type": "string", "default": "500m", "example": "500m" }, "min_memory": { "type": "string", "default": "128Mi", "example": "128Mi" }, "max_memory": { "type": "string", "default": "256Mi", "example": "256Mi" }, "storage": { "type": "string", "example": "512Mi" }, "timeout": { "type": "integer", "description": "Timeout in seconds for the function deployment.", "example": "60" } }, "example": { "min_concurrency": "0", "max_concurrency": "10", "min_cpu": "100m", "max_cpu": "500m", "min_memory": "128Mi", "max_memory": "256Mi" } }, "LinkConfig": { "type": "object", "properties": { "retries": { "type": "integer", "description": "Number of retries for the trigger.", "example": "3" }, "events_order": { "type": "string", "enum": [ "ordered", "unordered" ], "description": "Ordering of events for the trigger." } } }, "LinkConditionalTriggerLabels": { "description": "Conditional trigger labels for the link. These are used to conditionally trigger the link. |\nAll labels must be set to the specified values to trigger the link (i.e. AND operation between labels) |\nLabels names must be up to 15 lowercase characters or digits, must start with a letter\n", "type": "array", "items": { "type": "object", "properties": { "triggerLabelName": { "type": "string", "pattern": "^[a-z][a-z0-9]{0,14}$" }, "triggerLabelValue": { "type": "string", "pattern": "^[a-zA-Z0-9]{1,64}$" } }, "required": [ "triggerLabelName", "triggerLabelValue" ] }, "example": [ { "triggerLabelName": "logginglevel", "triggerLabelValue": "debug" }, { "triggerLabelName": "errorseverity", "triggerLabelValue": "high" } ] }, "EnvironmentVariable": { "type": "object", "properties": { "name": { "type": "string", "minLength": "1" }, "value": { "type": "string", "minLength": "1" } } }, "EventBatchingConfig": { "type": "object", "properties": { "batch_max_size": { "type": "integer", "description": "The maximum number of events to batch together.", "minimum": "1", "maximum": "512", "example": "100" }, "batch_timeout_ms": { "description": "The timeout in milliseconds for the batch. The batch will be invoked after this timeout, even if the batch is not full.", "type": "integer", "minimum": "0", "maximum": "60000", "example": "5000" } }, "required": [ "batch_max_size", "batch_timeout_ms" ] }, "AutoscalingConfig": { "type": "object", "description": "Autoscaling configuration for the function deployment. Defines how the function\nscales based on incoming requests or resource utilization.\n\nThree autoscaling metrics are supported:\n- concurrency: Scale based on concurrent requests per instance (default, supports scale-to-zero)\n- rps: Scale based on requests per second per instance (supports scale-to-zero)\n- resource: Scale based on CPU or memory utilization (does not support scale-to-zero)\n\nOnly one of 'concurrency', 'rps', or 'resource' should be provided, matching the 'metric' field.\n", "required": [ "metric" ], "discriminator": { "propertyName": "metric", "mapping": { "concurrency": "#/components/schemas/ConcurrencyAutoscalingConfig", "rps": "#/components/schemas/RequestAutoscalingConfig", "resource": "#/components/schemas/ResourceAutoscalingConfig" } }, "properties": { "metric": { "type": "string", "enum": [ "concurrency", "rps", "resource" ], "description": "The metric used for autoscaling decisions. Determines which configuration object should be provided:\n- concurrency: Provide 'concurrency' configuration object\n- rps: Provide 'rps' configuration object\n- resource: Provide 'resource' configuration object\n", "example": "concurrency" }, "concurrency": { "description": "Configuration for concurrency-based autoscaling. Required when metric is 'concurrency'.", "$ref": "#/components/schemas/ConcurrencyAutoscalingConfig" }, "rps": { "description": "Configuration for RPS-based autoscaling. Required when metric is 'rps'.", "$ref": "#/components/schemas/RequestAutoscalingConfig" }, "resource": { "description": "Configuration for resource-based autoscaling. Required when metric is 'resource'.", "$ref": "#/components/schemas/ResourceAutoscalingConfig" } }, "example": { "metric": "concurrency", "concurrency": { "target": "20", "target_utilization_percentage": "70" } } }, "ConcurrencyAutoscalingConfig": { "description": "Autoscaling configuration based on concurrent requests metric.\nExtends RequestAutoscalingConfig with concurrency-specific options.\n", "allOf": [ { "$ref": "#/components/schemas/RequestAutoscalingConfig" }, { "type": "object", "properties": { "hard_limit": { "type": "integer", "minimum": "0", "description": "Hard limit for concurrent requests per instance. Surplus requests will be buffered\nuntil capacity is available. Set to 0 for unlimited (default).\n\nWarning: Using a hard limit may negatively impact throughput and latency.\nOnly recommended if there's a clear use case for limiting concurrency.\n", "example": "0" } } } ], "example": { "target": "20", "target_utilization_percentage": "70", "stable_window_seconds": "60", "burst_threshold_percentage": "200", "hard_limit": "0" } }, "RequestAutoscalingConfig": { "type": "object", "description": "Common autoscaling configuration for request-based metrics (concurrency and RPS).\nThis configuration supports scale-to-zero when there is no traffic.\n", "properties": { "target": { "type": "integer", "minimum": "1", "default": "20", "description": "Target value per instance. The autoscaler will try to maintain this level per instance.\n- For concurrency metric: target number of concurrent requests (default: 20, which matches\n the default number of worker threads in non-asyncio Python functions)\n- For RPS metric: target requests per second\n", "example": "20" }, "target_utilization_percentage": { "type": "integer", "minimum": "1", "maximum": "100", "description": "Target utilization percentage (1-100). Specifies what percentage of the target\nshould actually be targeted by the autoscaler. This causes the autoscaler to\nscale up before the target is reached.\n\nFor example, with target=10 and target_utilization_percentage=70, the autoscaler\nwill create a new instance when average metric value reaches 7.\n", "default": "70", "example": "70" }, "stable_window_seconds": { "type": "integer", "minimum": "6", "maximum": "3600", "description": "Time window in seconds for stable autoscaling decisions (6 to 3600).\nLarger values result in more smoothing.\n\nWhen scaling to zero, the last instance is only removed after no traffic\nfor the entire duration of this window.\n", "default": "60", "example": "60" }, "burst_window_percentage": { "type": "integer", "minimum": "1", "maximum": "100", "description": "Burst detection window as a percentage of stable window (1-100).\nDefines the shorter time window used to detect traffic bursts.\nLower values make burst detection more sensitive.\n", "default": "10", "example": "10" }, "burst_threshold_percentage": { "type": "integer", "minimum": "110", "maximum": "1000", "description": "Burst mode threshold as a percentage of current capacity (110-1000).\nBurst mode is triggered when traffic exceeds this percentage of what\ncurrent instances can handle.\n\nFor example, 200 means burst mode starts when traffic is 2x current capacity.\n", "default": "200", "example": "200" }, "scale_down_delay_seconds": { "type": "integer", "minimum": "0", "description": "Delay in seconds before scaling down after load decreases.\nHelps prevent thrashing during fluctuating traffic.\n", "default": "300", "example": "300" }, "scale_to_zero_delay_seconds": { "type": "integer", "minimum": "0", "description": "Minimum time in seconds to retain the last instance before scaling to zero.\nThe instance is kept for at least this duration after the autoscaler decides to scale to zero.\n", "default": "600", "example": "600" } }, "example": { "target": "20", "target_utilization_percentage": "70", "stable_window_seconds": "60", "burst_threshold_percentage": "200" } }, "ResourceAutoscalingConfig": { "type": "object", "description": "Autoscaling configuration based on resource utilization (CPU or memory).\n\nNote: Resource-based autoscaling does not support scale-to-zero. \nUse concurrency or rps metrics if scale-to-zero is required.\n", "required": [ "resource_autoscaling_type", "target" ], "properties": { "resource_autoscaling_type": { "type": "string", "enum": [ "cpu", "memory" ], "description": "The resource type to use for autoscaling:\n- cpu: Scale based on CPU utilization percentage\n- memory: Scale based on memory utilization percentage\n", "example": "cpu" }, "target": { "type": "integer", "minimum": "1", "description": "Target value for the selected resource.\nFor CPU, this is the target utilization percentage (e.g., 80 means 80% of CPU request).\nNote: The Knative documentation at https://knative.dev/docs/serving/autoscaling/autoscaling-metrics/\nincorrectly states this is in millicores, but testing and Knative source code confirm it's a percentage.\nFor memory, this is in Mi (e.g., 200 means 200Mi).\nThe HPA will scale when actual usage exceeds this target.\n", "example": "80" }, "stable_window_seconds": { "type": "integer", "minimum": "6", "maximum": "3600", "description": "Time window in seconds for stable autoscaling decisions (6 to 3600).\nThis controls the HPA stabilization window for scale-down decisions.\nLarger values result in more smoothing and slower scale-down.\nDefault: not set (uses Kubernetes HPA default of 300s)\n", "example": "60" } }, "example": { "resource_autoscaling_type": "cpu", "target": "80" } } }, "responses": { "BadRequestError": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "UnauthorizedError": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "ForbiddenError": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "NotFoundError": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "ConflictError": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "ValidationError": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "InternalServerError": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } } ````