{
  "openapi": "3.1.0",
  "info": {
    "title": "Clipboard+ API",
    "version": "1.1.0",
    "description": "Read and manage the authenticated user's clipboard history, snippets, and settings. Create a scoped personal API key in Clipboard+ Account settings and send it as a Bearer token. Prefer read-only scopes and ask the user before any write or delete operation."
  },
  "servers": [{ "url": "https://backend-production-74d4.up.railway.app", "description": "Production" }],
  "security": [{ "personalApiKey": [] }],
  "tags": [
    { "name": "Clipboard", "description": "Clipboard history. Clipboard writes require clipboard:write; reads require clipboard:read." },
    { "name": "Snippets", "description": "Text-expansion snippets. Writes require snippets:write; reads require snippets:read." },
    { "name": "Settings", "description": "Clipboard+ preferences. Writes require settings:write; reads require settings:read." },
    { "name": "Sync", "description": "Advanced bulk synchronization. Prefer ordinary resource operations unless implementing a sync client." }
  ],
  "components": {
    "securitySchemes": {
      "personalApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "cp_live_...",
        "description": "A scoped personal API key created in Account settings. Never expose or log it."
      }
    },
    "parameters": {
      "ClipboardId": { "in": "path", "name": "id", "required": true, "description": "Clipboard item UUID.", "schema": { "type": "string", "format": "uuid" } },
      "SnippetId": { "in": "path", "name": "id", "required": true, "description": "Snippet UUID.", "schema": { "type": "string", "format": "uuid" } }
    },
    "responses": {
      "BadRequest": { "description": "Invalid input.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } },
      "Unauthorized": { "description": "Missing, invalid, expired, or revoked API key.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } },
      "Forbidden": { "description": "The API key lacks the operation's required scope.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } },
      "NotFound": { "description": "The resource does not exist for this user.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } },
      "Conflict": { "description": "The request conflicts with a resource limit or existing value.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } },
      "PayloadTooLarge": { "description": "The request or item exceeds a server limit.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } },
      "TooManyRequests": { "description": "Rate limit exceeded. Retry with exponential backoff and honor Retry-After when present.", "headers": { "Retry-After": { "schema": { "type": "integer" }, "description": "Seconds until retry." } }, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } },
      "ServerError": { "description": "Unexpected server error.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }
    },
    "schemas": {
      "Error": { "type": "object", "additionalProperties": false, "properties": { "error": { "type": "string" } }, "required": ["error"] },
      "ClipboardItem": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": { "type": "string", "format": "uuid" },
          "type": { "type": "string", "enum": ["text", "url"] },
          "content": { "type": ["string", "null"] },
          "url": { "type": ["string", "null"], "format": "uri" },
          "title": { "type": ["string", "null"] },
          "domain": { "type": ["string", "null"] },
          "source": { "type": ["string", "null"] },
          "large": { "type": "boolean" },
          "isFavorite": { "type": "boolean" },
          "ts": { "type": "integer", "description": "Creation time in Unix milliseconds." },
          "updatedAt": { "type": "string", "format": "date-time" }
        },
        "required": ["id", "type", "content", "url", "title", "domain", "source", "large", "isFavorite", "ts", "updatedAt"]
      },
      "TextClipboardInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": { "const": "text" },
          "content": { "type": "string", "minLength": 1, "description": "UTF-8 payload; the server rejects payloads over 50,000 bytes and may truncate to the user's large-item threshold." },
          "title": { "type": "string", "maxLength": 500 },
          "domain": { "type": "string", "maxLength": 255 },
          "source": { "type": "string", "maxLength": 255 },
          "isLarge": { "type": "boolean", "default": false }
        },
        "required": ["type", "content"]
      },
      "UrlClipboardInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "type": { "const": "url" },
          "url": { "type": "string", "format": "uri", "minLength": 1, "maxLength": 4000, "pattern": "^https?://", "description": "HTTP or HTTPS URL. A leading www. is also accepted by the server and normalized to HTTPS." },
          "title": { "type": "string", "maxLength": 500 },
          "domain": { "type": "string", "maxLength": 255 },
          "source": { "type": "string", "maxLength": 255 },
          "isLarge": { "type": "boolean", "default": false }
        },
        "required": ["type", "url"]
      },
      "ClipboardInput": { "oneOf": [{ "$ref": "#/components/schemas/TextClipboardInput" }, { "$ref": "#/components/schemas/UrlClipboardInput" }], "discriminator": { "propertyName": "type" } },
      "ClipboardPage": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "items": { "type": "array", "items": { "$ref": "#/components/schemas/ClipboardItem" } },
          "hasMore": { "type": "boolean", "description": "True when another page may exist." },
          "limit": { "type": "integer", "minimum": 1, "maximum": 500 },
          "offset": { "type": "integer", "minimum": 0, "maximum": 100000 }
        },
        "required": ["items", "hasMore", "limit", "offset"]
      },
      "ClipboardResult": { "type": "object", "additionalProperties": false, "properties": { "item": { "$ref": "#/components/schemas/ClipboardItem" }, "duplicate": { "type": "boolean", "description": "Present and true when the latest item already matched and no item was created." } }, "required": ["item"] },
      "DeletedBoolean": { "type": "object", "additionalProperties": false, "properties": { "deleted": { "const": true } }, "required": ["deleted"] },
      "DeletedCount": { "type": "object", "additionalProperties": false, "properties": { "deleted": { "type": "integer", "minimum": 0 } }, "required": ["deleted"] },
      "Snippet": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": { "type": "string", "format": "uuid" },
          "trigger": { "type": "string", "minLength": 1, "maxLength": 100 },
          "content": { "type": "string", "minLength": 1, "maxLength": 7000 },
          "sortOrder": { "type": "integer", "minimum": 0 },
          "createdAt": { "type": "string", "format": "date-time" },
          "updatedAt": { "type": "string", "format": "date-time" }
        },
        "required": ["id", "trigger", "content", "sortOrder", "createdAt", "updatedAt"]
      },
      "SnippetInput": { "type": "object", "additionalProperties": false, "properties": { "trigger": { "type": "string", "minLength": 1, "maxLength": 100 }, "content": { "type": "string", "minLength": 1, "maxLength": 7000 } }, "required": ["trigger", "content"] },
      "SnippetResult": { "type": "object", "additionalProperties": false, "properties": { "snippet": { "$ref": "#/components/schemas/Snippet" } }, "required": ["snippet"] },
      "SnippetList": { "type": "object", "additionalProperties": false, "properties": { "snippets": { "type": "array", "maxItems": 200, "items": { "$ref": "#/components/schemas/Snippet" } } }, "required": ["snippets"] },
      "ReplaceSnippetsInput": { "type": "object", "additionalProperties": false, "properties": { "snippets": { "type": "array", "maxItems": 200, "items": { "$ref": "#/components/schemas/SnippetInput" } } }, "required": ["snippets"] },
      "Settings": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "maxItems": { "type": "integer", "minimum": 10, "maximum": 500 },
          "retentionDays": { "type": "integer", "minimum": 1, "maximum": 365 },
          "largeItemThreshold": { "type": "integer", "minimum": 0, "maximum": 7000 },
          "theme": { "type": "string", "enum": ["system", "light", "dark"] },
          "globalMonitor": { "type": "boolean" },
          "pollIntervalMs": { "type": "integer", "minimum": 500, "maximum": 5000 },
          "updatedAt": { "type": "string", "format": "date-time" }
        },
        "required": ["maxItems", "retentionDays", "largeItemThreshold", "theme", "globalMonitor", "pollIntervalMs", "updatedAt"]
      },
      "SettingsInput": {
        "type": "object",
        "additionalProperties": false,
        "description": "Partial update. Omitted properties retain their current values.",
        "minProperties": 1,
        "properties": {
          "maxItems": { "type": "integer", "minimum": 10, "maximum": 500 },
          "retentionDays": { "type": "integer", "minimum": 1, "maximum": 365 },
          "largeItemThreshold": { "type": "integer", "minimum": 0, "maximum": 7000 },
          "theme": { "type": "string", "enum": ["system", "light", "dark"] },
          "globalMonitor": { "type": "boolean" },
          "pollIntervalMs": { "type": "integer", "minimum": 500, "maximum": 5000 }
        }
      },
      "SettingsResult": { "type": "object", "additionalProperties": false, "properties": { "settings": { "$ref": "#/components/schemas/Settings" } }, "required": ["settings"] },
      "BulkDeleteInput": { "type": "object", "additionalProperties": false, "properties": { "ids": { "type": "array", "minItems": 1, "maxItems": 500, "uniqueItems": true, "items": { "type": "string", "format": "uuid" } } }, "required": ["ids"] },
      "SyncClipboardItem": {
        "type": "object",
        "description": "Sync item. Invalid items are skipped. Text requires content; URL requires url.",
        "properties": {
          "id": { "description": "Client-local identifier used to match the favorites array." },
          "type": { "type": "string", "enum": ["text", "url"] },
          "content": { "type": "string", "maxLength": 7000 },
          "url": { "type": "string", "format": "uri", "maxLength": 4000 },
          "title": { "type": "string", "maxLength": 500 },
          "domain": { "type": "string", "maxLength": 255 },
          "source": { "type": "string", "maxLength": 255 },
          "large": { "type": "boolean" },
          "isFavorite": { "type": "boolean" },
          "ts": { "type": "integer", "description": "Creation time in Unix milliseconds; values are clamped to the server's accepted time window." }
        },
        "required": ["type"]
      },
      "SyncInput": { "type": "object", "additionalProperties": false, "properties": { "items": { "type": "array", "maxItems": 1000, "items": { "$ref": "#/components/schemas/SyncClipboardItem" } }, "favorites": { "type": "array", "description": "Client-local item IDs to mark as favorites.", "items": {} } }, "required": ["items"] },
      "SyncResult": { "type": "object", "additionalProperties": false, "properties": { "synced": { "type": "integer", "minimum": 0 } }, "required": ["synced"] },
      "DeletedItem": { "type": "object", "additionalProperties": false, "properties": { "type": { "type": "string", "enum": ["text", "url"] }, "ts": { "type": "integer" }, "contentPrefix": { "type": "string" } }, "required": ["type", "ts", "contentPrefix"] },
      "PullSnippet": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "string", "format": "uuid" }, "trigger": { "type": "string" }, "content": { "type": "string" }, "sortOrder": { "type": "integer" } }, "required": ["id", "trigger", "content", "sortOrder"] },
      "PullResult": { "type": "object", "additionalProperties": false, "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/ClipboardItem" } }, "snippets": { "type": "array", "items": { "$ref": "#/components/schemas/PullSnippet" } }, "settings": { "oneOf": [{ "$ref": "#/components/schemas/Settings" }, { "type": "null" }] }, "deletedItems": { "type": "array", "items": { "$ref": "#/components/schemas/DeletedItem" } } }, "required": ["items", "snippets", "settings"] }
    }
  },
  "paths": {
    "/api/clipboard": {
      "get": {
        "operationId": "listClipboardItems", "tags": ["Clipboard"], "summary": "List clipboard items", "description": "Returns one page in newest-first order.", "x-required-scope": "clipboard:read",
        "parameters": [
          { "in": "query", "name": "limit", "description": "Page size; defaults to 200.", "schema": { "type": "integer", "minimum": 1, "maximum": 500, "default": 200 } },
          { "in": "query", "name": "offset", "description": "Number of items to skip; defaults to 0.", "schema": { "type": "integer", "minimum": 0, "maximum": 100000, "default": 0 } }
        ],
        "responses": { "200": { "description": "Clipboard page.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClipboardPage" } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      },
      "post": {
        "operationId": "createClipboardItem", "tags": ["Clipboard"], "summary": "Add a clipboard item", "description": "Creates an item. If the newest item already matches, returns 200 with duplicate=true instead of creating another. Ask the user for confirmation first.", "x-required-scope": "clipboard:write", "x-confirmation-required": true,
        "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClipboardInput" }, "examples": { "text": { "value": { "type": "text", "content": "Added by my automation", "source": "api" } }, "url": { "value": { "type": "url", "url": "https://example.com", "title": "Example", "source": "api" } } } } } },
        "responses": { "200": { "description": "Duplicate of the newest item; no item created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClipboardResult" } } } }, "201": { "description": "Item created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClipboardResult" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "413": { "$ref": "#/components/responses/PayloadTooLarge" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      },
      "delete": {
        "operationId": "deleteNonFavoriteClipboardItems", "tags": ["Clipboard"], "summary": "Delete all non-favorite clipboard items", "description": "Destructive. Deletes every non-favorite clipboard item while preserving favorites. Ask the user for confirmation first.", "x-required-scope": "clipboard:write", "x-confirmation-required": true,
        "responses": { "200": { "description": "Number of deleted items.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletedCount" } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/clipboard/bulk": {
      "delete": {
        "operationId": "bulkDeleteClipboardItems", "tags": ["Clipboard"], "summary": "Delete selected clipboard items", "description": "Destructive. Deletes up to 500 items by UUID. Ask the user for confirmation first.", "x-required-scope": "clipboard:write", "x-confirmation-required": true,
        "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkDeleteInput" } } } },
        "responses": { "200": { "description": "Number of deleted items.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletedCount" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "413": { "$ref": "#/components/responses/PayloadTooLarge" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/clipboard/{id}/favorite": {
      "patch": {
        "operationId": "toggleClipboardItemFavorite", "tags": ["Clipboard"], "summary": "Toggle a clipboard item's favorite status", "description": "Toggles the current value; the response contains the resulting item. Ask the user for confirmation first.", "x-required-scope": "clipboard:write", "x-confirmation-required": true, "parameters": [{ "$ref": "#/components/parameters/ClipboardId" }],
        "responses": { "200": { "description": "Updated item.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClipboardResult" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/clipboard/{id}": {
      "delete": {
        "operationId": "deleteClipboardItem", "tags": ["Clipboard"], "summary": "Delete a clipboard item", "description": "Destructive. Ask the user for confirmation first.", "x-required-scope": "clipboard:write", "x-confirmation-required": true, "parameters": [{ "$ref": "#/components/parameters/ClipboardId" }],
        "responses": { "200": { "description": "Item deleted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletedBoolean" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/snippets": {
      "get": {
        "operationId": "listSnippets", "tags": ["Snippets"], "summary": "List all snippets", "description": "Returns all snippets in sort order; this endpoint is not paginated.", "x-required-scope": "snippets:read",
        "responses": { "200": { "description": "Snippet list.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnippetList" } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      },
      "post": {
        "operationId": "createSnippet", "tags": ["Snippets"], "summary": "Create a snippet", "description": "Ask the user for confirmation first.", "x-required-scope": "snippets:write", "x-confirmation-required": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnippetInput" }, "example": { "trigger": ";email", "content": "hello@example.com" } } } },
        "responses": { "201": { "description": "Snippet created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnippetResult" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "409": { "$ref": "#/components/responses/Conflict" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      },
      "put": {
        "operationId": "replaceAllSnippets", "tags": ["Snippets"], "summary": "Replace all snippets", "description": "Destructive bulk synchronization. Deletes all existing snippets and replaces them with the supplied list. Ask the user for confirmation first. Prefer createSnippet and deleteSnippet for ordinary changes.", "x-required-scope": "snippets:write", "x-confirmation-required": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReplaceSnippetsInput" } } } },
        "responses": { "200": { "description": "Complete replacement snippet list.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SnippetList" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "409": { "$ref": "#/components/responses/Conflict" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/snippets/{id}": {
      "delete": {
        "operationId": "deleteSnippet", "tags": ["Snippets"], "summary": "Delete a snippet", "description": "Destructive. Ask the user for confirmation first.", "x-required-scope": "snippets:write", "x-confirmation-required": true, "parameters": [{ "$ref": "#/components/parameters/SnippetId" }],
        "responses": { "200": { "description": "Snippet deleted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeletedBoolean" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "404": { "$ref": "#/components/responses/NotFound" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/settings": {
      "get": {
        "operationId": "getSettings", "tags": ["Settings"], "summary": "Get settings", "x-required-scope": "settings:read",
        "responses": { "200": { "description": "Current settings.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettingsResult" } } } }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      },
      "put": {
        "operationId": "updateSettings", "tags": ["Settings"], "summary": "Update settings", "description": "Partially updates settings; omitted fields retain their values. Ask the user before changing settings.", "x-required-scope": "settings:write", "x-confirmation-required": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettingsInput" }, "example": { "theme": "dark", "maxItems": 300 } } } },
        "responses": { "200": { "description": "Updated settings.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettingsResult" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/clipboard/sync": {
      "post": {
        "operationId": "pushClipboardSync", "tags": ["Sync"], "summary": "Push a clipboard sync batch", "description": "Advanced and potentially destructive through retention/limit enforcement. Intended for sync clients; ordinary AI integrations should use createClipboardItem. Ask the user for confirmation first.", "x-required-scope": "clipboard:write", "x-confirmation-required": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncInput" } } } },
        "responses": { "200": { "description": "Number of newly synchronized items.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SyncResult" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "413": { "$ref": "#/components/responses/PayloadTooLarge" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    },
    "/api/clipboard/pull": {
      "get": {
        "operationId": "pullSyncState", "tags": ["Sync"], "summary": "Pull combined sync state", "description": "Advanced sync endpoint returning clipboard items, snippets, settings, and optional deletion tombstones. A clipboard:read key can read this combined data; only use it when the user explicitly asks for full sync state.", "x-required-scope": "clipboard:read",
        "parameters": [{ "in": "query", "name": "since", "description": "Return records updated after this timestamp. Deletion tombstones are also filtered by it.", "schema": { "type": "string", "format": "date-time" } }],
        "responses": { "200": { "description": "Combined sync state.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PullResult" } } } }, "400": { "$ref": "#/components/responses/BadRequest" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "403": { "$ref": "#/components/responses/Forbidden" }, "429": { "$ref": "#/components/responses/TooManyRequests" }, "500": { "$ref": "#/components/responses/ServerError" } }
      }
    }
  }
}
