{
  "openapi": "3.1.0",
  "info": {
    "title": "Signailist developer API",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://api.signailist.com"
    }
  ],
  "paths": {
    "/v1/author/overview": {
      "get": {
        "operationId": "author_overview",
        "summary": "Read current author series, recent editions and per-channel delivery receipts, including MCP-created automations.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/accounts/telegram/{id}/messages/edit": {
      "post": {
        "operationId": "edit_telegram_publication",
        "summary": "Edit the text or caption of a known sent workspace publication in place. Requires exact expectedText; preserves the message ID and photo and records a verified edit receipt.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "publicationJobId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  },
                  "expectedText": {
                    "type": "string",
                    "maxLength": 4096
                  },
                  "text": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 8000
                  }
                },
                "required": [
                  "publicationJobId",
                  "expectedText",
                  "text"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/accounts/telegram/{id}/messages/check": {
      "post": {
        "operationId": "verify_telegram_publications",
        "summary": "Read back sent workspace publication messages and verify their text/photo without sending anything.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "publicationJobIds": {
                    "minItems": 1,
                    "maxItems": 20,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  }
                },
                "required": [
                  "publicationJobIds"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/editions/{id}/regenerate-version": {
      "post": {
        "operationId": "regenerate_author_version",
        "summary": "Explicitly regenerate one unpublished language/style version. Frozen objects, shared image and other versions are reused.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "versionId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  }
                },
                "required": [
                  "versionId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/editions/{id}/resume": {
      "post": {
        "operationId": "resume_author_edition",
        "summary": "Resume a failed frozen edition using durable paid outputs; uncertain provider calls are never repeated.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/accounts/telegram/{id}/channels/check": {
      "post": {
        "operationId": "check_telegram_channels",
        "summary": "Read publish rights and discussion links without sending messages.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "channels": {
                    "minItems": 1,
                    "maxItems": 20,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "pattern": "^@[a-zA-Z0-9_]{4,32}$"
                    }
                  }
                },
                "required": [
                  "channels"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/accounts/telegram/{id}/channels/sync": {
      "post": {
        "operationId": "sync_telegram_channels",
        "summary": "Discover connected Telegram account admin channels.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/catalogs": {
      "get": {
        "operationId": "list_content_catalogs",
        "summary": "List private content catalogs.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_content_catalog",
        "summary": "Create a manual or API content catalog; bearerToken is write-only.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "enum": [
                      "api",
                      "manual"
                    ]
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 180
                  },
                  "baseUrl": {
                    "type": "string",
                    "format": "uri"
                  },
                  "bearerToken": {
                    "type": "string",
                    "maxLength": 2000
                  },
                  "manifest": {
                    "type": "object",
                    "properties": {
                      "schemaVersion": {
                        "type": "number",
                        "const": 1
                      },
                      "id": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      },
                      "title": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 200
                      },
                      "languages": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 2,
                          "maxLength": 35
                        }
                      },
                      "collections": {
                        "maxItems": 100,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 200
                            },
                            "title": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 200
                            }
                          },
                          "required": [
                            "id",
                            "title"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "required": [
                      "schemaVersion",
                      "id",
                      "title",
                      "languages",
                      "collections"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "title"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/catalogs/{id}": {
      "get": {
        "operationId": "get_content_catalog",
        "summary": "Read a catalog and sync status without credentials.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/catalogs/{id}/sync": {
      "post": {
        "operationId": "sync_content_catalog",
        "summary": "Validate and sync the external catalog.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/catalogs/{id}/items": {
      "get": {
        "operationId": "list_catalog_items",
        "summary": "Browse catalog objects with cursor pagination.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "put": {
        "operationId": "put_catalog_item",
        "summary": "Save a manual catalog object and image descriptions.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "revision": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200
                  },
                  "localized": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string",
                      "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$"
                    },
                    "additionalProperties": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "maxLength": 500
                        },
                        "description": {
                          "type": "string",
                          "maxLength": 30000
                        }
                      },
                      "required": [
                        "title",
                        "description"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "tags": {
                    "maxItems": 100,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "maxLength": 100
                    }
                  },
                  "attributes": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  },
                  "images": {
                    "maxItems": 20,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "url": {
                          "type": "string",
                          "maxLength": 2048,
                          "format": "uri"
                        },
                        "collectionId": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "mimeType": {
                          "type": "string",
                          "enum": [
                            "image/jpeg",
                            "image/png",
                            "image/webp"
                          ]
                        },
                        "revision": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 200
                        },
                        "description": {
                          "type": "string",
                          "maxLength": 4000
                        }
                      },
                      "required": [
                        "id",
                        "url",
                        "collectionId",
                        "mimeType",
                        "revision",
                        "description"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "id",
                  "revision",
                  "localized",
                  "tags",
                  "attributes",
                  "images"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/series": {
      "get": {
        "operationId": "list_author_series",
        "summary": "List authored series and next run.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_author_series",
        "summary": "Create a paused authored series with language/style versions and independent placements.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 180
                  },
                  "catalogId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  },
                  "config": {
                    "type": "object",
                    "properties": {
                      "count": {
                        "default": 2,
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "selection": {
                        "default": "random",
                        "type": "string",
                        "enum": [
                          "random",
                          "sequential",
                          "tags"
                        ]
                      },
                      "tags": {
                        "default": [],
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 100
                        }
                      },
                      "repeatWindow": {
                        "default": 7,
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 365
                      },
                      "instruction": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16000
                      },
                      "generation": {
                        "type": "object",
                        "properties": {
                          "titles": {
                            "default": {},
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            }
                          },
                          "includeItemTitles": {
                            "default": true,
                            "type": "boolean"
                          },
                          "itemRoles": {
                            "default": {},
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "maxItems": 10,
                              "type": "array",
                              "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 180
                              }
                            }
                          },
                          "sections": {
                            "default": [],
                            "maxItems": 30,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "pattern": "^[a-zA-Z0-9_-]{1,80}$"
                                },
                                "titles": {
                                  "type": "object",
                                  "propertyNames": {
                                    "type": "string"
                                  },
                                  "additionalProperties": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 180
                                  }
                                },
                                "instruction": {
                                  "default": "",
                                  "type": "string",
                                  "maxLength": 2000
                                }
                              },
                              "required": [
                                "id",
                                "titles",
                                "instruction"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "maxCharacters": {
                            "default": 3000,
                            "type": "integer",
                            "minimum": 300,
                            "maximum": 10000
                          },
                          "maxTokens": {
                            "default": 3200,
                            "type": "integer",
                            "minimum": 500,
                            "maximum": 8000
                          }
                        },
                        "required": [
                          "titles",
                          "includeItemTitles",
                          "itemRoles",
                          "sections",
                          "maxCharacters",
                          "maxTokens"
                        ],
                        "additionalProperties": false
                      },
                      "presentation": {
                        "type": "object",
                        "properties": {
                          "headingEmoji": {
                            "default": "",
                            "type": "string",
                            "maxLength": 16
                          },
                          "boldHeading": {
                            "default": false,
                            "type": "boolean"
                          },
                          "ctaUrl": {
                            "type": "string",
                            "format": "uri"
                          },
                          "ctaLabels": {
                            "default": {},
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "maxLength": 180
                            }
                          }
                        },
                        "required": [
                          "headingEmoji",
                          "boldHeading",
                          "ctaLabels"
                        ],
                        "additionalProperties": false
                      },
                      "image": {
                        "type": "object",
                        "properties": {
                          "mode": {
                            "default": "generate",
                            "type": "string",
                            "enum": [
                              "none",
                              "original",
                              "album",
                              "generate"
                            ]
                          },
                          "required": {
                            "default": true,
                            "type": "boolean"
                          },
                          "collectionId": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 180
                          },
                          "model": {
                            "default": "google/nano-banana-2",
                            "type": "string",
                            "enum": [
                              "google/nano-banana-2",
                              "google/nano-banana-pro"
                            ]
                          },
                          "prompt": {
                            "default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
                            "type": "string",
                            "maxLength": 12000
                          },
                          "styleReferenceAssetIds": {
                            "default": [],
                            "maxItems": 2,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            }
                          }
                        },
                        "required": [
                          "mode",
                          "required",
                          "model",
                          "prompt",
                          "styleReferenceAssetIds"
                        ],
                        "additionalProperties": false
                      },
                      "schedule": {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "default": "daily",
                            "type": "string",
                            "enum": [
                              "daily",
                              "weekly",
                              "monthly"
                            ]
                          },
                          "time": {
                            "type": "string"
                          },
                          "timezone": {
                            "type": "string"
                          },
                          "weekdays": {
                            "default": [],
                            "type": "array",
                            "items": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 7
                            }
                          },
                          "monthDays": {
                            "default": [],
                            "type": "array",
                            "items": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 31
                            }
                          }
                        },
                        "required": [
                          "kind",
                          "time",
                          "timezone",
                          "weekdays",
                          "monthDays"
                        ],
                        "additionalProperties": false
                      },
                      "versions": {
                        "minItems": 1,
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "language": {
                              "type": "string",
                              "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$"
                            },
                            "templateId": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "image": {
                              "type": "object",
                              "properties": {
                                "mode": {
                                  "default": "generate",
                                  "type": "string",
                                  "enum": [
                                    "none",
                                    "original",
                                    "album",
                                    "generate"
                                  ]
                                },
                                "required": {
                                  "default": true,
                                  "type": "boolean"
                                },
                                "collectionId": {
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 180
                                },
                                "model": {
                                  "default": "google/nano-banana-2",
                                  "type": "string",
                                  "enum": [
                                    "google/nano-banana-2",
                                    "google/nano-banana-pro"
                                  ]
                                },
                                "prompt": {
                                  "default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
                                  "type": "string",
                                  "maxLength": 12000
                                },
                                "styleReferenceAssetIds": {
                                  "default": [],
                                  "maxItems": 2,
                                  "type": "array",
                                  "items": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 180
                                  }
                                }
                              },
                              "required": [
                                "mode",
                                "required",
                                "model",
                                "prompt",
                                "styleReferenceAssetIds"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "required": [
                            "id",
                            "language",
                            "templateId"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "placements": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "versionId": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "targetId": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "time": {
                              "type": "string"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "versionId",
                            "targetId",
                            "time",
                            "timezone"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "required": [
                      "count",
                      "selection",
                      "tags",
                      "repeatWindow",
                      "instruction",
                      "image",
                      "schedule",
                      "versions",
                      "placements"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "title",
                  "catalogId",
                  "config"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/series/{id}": {
      "get": {
        "operationId": "get_author_series",
        "summary": "Read authored series configuration.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "put": {
        "operationId": "update_author_series",
        "summary": "Update authored series; existing editions remain immutable.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "expectedRevision": {
                    "type": "string",
                    "maxLength": 100
                  },
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 180
                  },
                  "catalogId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  },
                  "config": {
                    "type": "object",
                    "properties": {
                      "count": {
                        "default": 2,
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 10
                      },
                      "selection": {
                        "default": "random",
                        "type": "string",
                        "enum": [
                          "random",
                          "sequential",
                          "tags"
                        ]
                      },
                      "tags": {
                        "default": [],
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "string",
                          "maxLength": 100
                        }
                      },
                      "repeatWindow": {
                        "default": 7,
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 365
                      },
                      "instruction": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 16000
                      },
                      "generation": {
                        "type": "object",
                        "properties": {
                          "titles": {
                            "default": {},
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            }
                          },
                          "includeItemTitles": {
                            "default": true,
                            "type": "boolean"
                          },
                          "itemRoles": {
                            "default": {},
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "maxItems": 10,
                              "type": "array",
                              "items": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 180
                              }
                            }
                          },
                          "sections": {
                            "default": [],
                            "maxItems": 30,
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "pattern": "^[a-zA-Z0-9_-]{1,80}$"
                                },
                                "titles": {
                                  "type": "object",
                                  "propertyNames": {
                                    "type": "string"
                                  },
                                  "additionalProperties": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 180
                                  }
                                },
                                "instruction": {
                                  "default": "",
                                  "type": "string",
                                  "maxLength": 2000
                                }
                              },
                              "required": [
                                "id",
                                "titles",
                                "instruction"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "maxCharacters": {
                            "default": 3000,
                            "type": "integer",
                            "minimum": 300,
                            "maximum": 10000
                          },
                          "maxTokens": {
                            "default": 3200,
                            "type": "integer",
                            "minimum": 500,
                            "maximum": 8000
                          }
                        },
                        "required": [
                          "titles",
                          "includeItemTitles",
                          "itemRoles",
                          "sections",
                          "maxCharacters",
                          "maxTokens"
                        ],
                        "additionalProperties": false
                      },
                      "presentation": {
                        "type": "object",
                        "properties": {
                          "headingEmoji": {
                            "default": "",
                            "type": "string",
                            "maxLength": 16
                          },
                          "boldHeading": {
                            "default": false,
                            "type": "boolean"
                          },
                          "ctaUrl": {
                            "type": "string",
                            "format": "uri"
                          },
                          "ctaLabels": {
                            "default": {},
                            "type": "object",
                            "propertyNames": {
                              "type": "string"
                            },
                            "additionalProperties": {
                              "type": "string",
                              "maxLength": 180
                            }
                          }
                        },
                        "required": [
                          "headingEmoji",
                          "boldHeading",
                          "ctaLabels"
                        ],
                        "additionalProperties": false
                      },
                      "image": {
                        "type": "object",
                        "properties": {
                          "mode": {
                            "default": "generate",
                            "type": "string",
                            "enum": [
                              "none",
                              "original",
                              "album",
                              "generate"
                            ]
                          },
                          "required": {
                            "default": true,
                            "type": "boolean"
                          },
                          "collectionId": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 180
                          },
                          "model": {
                            "default": "google/nano-banana-2",
                            "type": "string",
                            "enum": [
                              "google/nano-banana-2",
                              "google/nano-banana-pro"
                            ]
                          },
                          "prompt": {
                            "default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
                            "type": "string",
                            "maxLength": 12000
                          },
                          "styleReferenceAssetIds": {
                            "default": [],
                            "maxItems": 2,
                            "type": "array",
                            "items": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            }
                          }
                        },
                        "required": [
                          "mode",
                          "required",
                          "model",
                          "prompt",
                          "styleReferenceAssetIds"
                        ],
                        "additionalProperties": false
                      },
                      "schedule": {
                        "type": "object",
                        "properties": {
                          "kind": {
                            "default": "daily",
                            "type": "string",
                            "enum": [
                              "daily",
                              "weekly",
                              "monthly"
                            ]
                          },
                          "time": {
                            "type": "string"
                          },
                          "timezone": {
                            "type": "string"
                          },
                          "weekdays": {
                            "default": [],
                            "type": "array",
                            "items": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 7
                            }
                          },
                          "monthDays": {
                            "default": [],
                            "type": "array",
                            "items": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 31
                            }
                          }
                        },
                        "required": [
                          "kind",
                          "time",
                          "timezone",
                          "weekdays",
                          "monthDays"
                        ],
                        "additionalProperties": false
                      },
                      "versions": {
                        "minItems": 1,
                        "maxItems": 20,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "language": {
                              "type": "string",
                              "pattern": "^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$"
                            },
                            "templateId": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "image": {
                              "type": "object",
                              "properties": {
                                "mode": {
                                  "default": "generate",
                                  "type": "string",
                                  "enum": [
                                    "none",
                                    "original",
                                    "album",
                                    "generate"
                                  ]
                                },
                                "required": {
                                  "default": true,
                                  "type": "boolean"
                                },
                                "collectionId": {
                                  "type": "string",
                                  "minLength": 1,
                                  "maxLength": 180
                                },
                                "model": {
                                  "default": "google/nano-banana-2",
                                  "type": "string",
                                  "enum": [
                                    "google/nano-banana-2",
                                    "google/nano-banana-pro"
                                  ]
                                },
                                "prompt": {
                                  "default": "Create an original composition based on the supplied subject images. Preserve recognizable subjects. No added text, labels or watermarks.",
                                  "type": "string",
                                  "maxLength": 12000
                                },
                                "styleReferenceAssetIds": {
                                  "default": [],
                                  "maxItems": 2,
                                  "type": "array",
                                  "items": {
                                    "type": "string",
                                    "minLength": 1,
                                    "maxLength": 180
                                  }
                                }
                              },
                              "required": [
                                "mode",
                                "required",
                                "model",
                                "prompt",
                                "styleReferenceAssetIds"
                              ],
                              "additionalProperties": false
                            }
                          },
                          "required": [
                            "id",
                            "language",
                            "templateId"
                          ],
                          "additionalProperties": false
                        }
                      },
                      "placements": {
                        "maxItems": 50,
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "versionId": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "targetId": {
                              "type": "string",
                              "minLength": 1,
                              "maxLength": 180
                            },
                            "time": {
                              "type": "string"
                            },
                            "timezone": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "versionId",
                            "targetId",
                            "time",
                            "timezone"
                          ],
                          "additionalProperties": false
                        }
                      }
                    },
                    "required": [
                      "count",
                      "selection",
                      "tags",
                      "repeatWindow",
                      "instruction",
                      "image",
                      "schedule",
                      "versions",
                      "placements"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "title",
                  "catalogId",
                  "config"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/series/{id}/automation": {
      "post": {
        "operationId": "set_author_automation",
        "summary": "Explicitly enable/pause automation; autoPublish requires publish scope and enabled requires run scope.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "enabled": {
                    "type": "boolean"
                  },
                  "autoPublish": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "enabled",
                  "autoPublish"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/series/{id}/trial": {
      "post": {
        "operationId": "trial_author_series",
        "summary": "Queue a paid authored edition with a stable intentKey. No delivery without explicit publication or saved autoPublish.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "intentKey": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 120
                  }
                },
                "required": [
                  "intentKey"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/series/{id}/editions": {
      "get": {
        "operationId": "list_author_editions",
        "summary": "List editions and outcomes.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/editions/{id}": {
      "get": {
        "operationId": "get_author_edition",
        "summary": "Inspect frozen source images, texts, generated cover and independent delivery receipts.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/author/editions/{id}/publish": {
      "post": {
        "operationId": "publish_author_edition",
        "summary": "Approve and deliver ready versions of a frozen edition; retry never regenerates.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "immediate": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/sources/{id}": {
      "delete": {
        "operationId": "delete_source",
        "summary": "Delete an unused source; saved history constraints remain enforced.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "patch": {
        "operationId": "update_source",
        "summary": "Update a source or pause collection.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/templates/{id}": {
      "delete": {
        "operationId": "delete_template",
        "summary": "Delete a digest template.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "patch": {
        "operationId": "update_template",
        "summary": "Update a digest template.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/schedules/{id}": {
      "delete": {
        "operationId": "delete_schedule",
        "summary": "Delete a publication schedule.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "patch": {
        "operationId": "update_schedule",
        "summary": "Edit a publication schedule.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/publications": {
      "get": {
        "operationId": "list_publications",
        "summary": "List publication outcomes and receipts.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/accounts/telegram": {
      "get": {
        "operationId": "list_telegram_accounts",
        "summary": "List connected Telegram accounts and collection/publication capabilities, without session secrets.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/source-topic-tracking": {
      "get": {
        "operationId": "get_source_topic_tracking",
        "summary": "Read source-to-topic assignments.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "track_source_topics",
        "summary": "Assign source materials to analysis topics.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/sources": {
      "get": {
        "operationId": "list_sources",
        "summary": "List source configuration and collection state.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_source",
        "summary": "Create a Telegram or RSS source. Collection starts paused.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "provider": {
                    "type": "string",
                    "enum": [
                      "rss",
                      "telegram"
                    ]
                  },
                  "title": {
                    "type": "string",
                    "maxLength": 500
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "username": {
                    "type": "string"
                  },
                  "enabled": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/sources/{id}/collect": {
      "post": {
        "operationId": "collect_source",
        "summary": "Queue source collection. Requires balance.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/sources/{id}/prepare": {
      "post": {
        "operationId": "prepare_source",
        "summary": "Queue processing of saved source materials.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/sources/{id}/analysis-status": {
      "get": {
        "operationId": "source_status",
        "summary": "Read source analysis state.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/sources/{id}/materials": {
      "get": {
        "operationId": "source_materials",
        "summary": "Read saved source materials.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/sources/{id}/results": {
      "get": {
        "operationId": "source_results",
        "summary": "Read processed source materials.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/topics": {
      "get": {
        "operationId": "list_topics",
        "summary": "List analysis topics.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_topic",
        "summary": "Create an analysis topic.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 160
                  },
                  "prompt": {
                    "type": "string",
                    "minLength": 1
                  },
                  "negativePrompt": {
                    "type": "string"
                  },
                  "aiModel": {
                    "type": "string"
                  },
                  "isActive": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "name",
                  "prompt"
                ],
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/topics/{id}": {
      "patch": {
        "operationId": "update_topic",
        "summary": "Update an analysis topic.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "delete": {
        "operationId": "delete_topic",
        "summary": "Delete an analysis topic.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/templates": {
      "get": {
        "operationId": "list_templates",
        "summary": "List digest templates.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_template",
        "summary": "Create a digest template.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 180
                  },
                  "tonePrompt": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 20000
                  },
                  "renderTemplate": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 40000
                  },
                  "sourceId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  },
                  "imageEnabled": {
                    "type": "boolean"
                  },
                  "textAiModel": {
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "tonePrompt",
                  "renderTemplate"
                ],
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/templates/generate": {
      "post": {
        "operationId": "generate_template",
        "summary": "Queue AI template generation.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digests": {
      "get": {
        "operationId": "list_digests",
        "summary": "List digests.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_digest",
        "summary": "Create a digest draft from selected materials.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "templateId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  },
                  "periodStart": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "periodEnd": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "selectedProcessedItemIds": {
                    "minItems": 1,
                    "maxItems": 200,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  }
                },
                "required": [
                  "templateId",
                  "periodStart",
                  "periodEnd",
                  "selectedProcessedItemIds"
                ],
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digest-candidates": {
      "get": {
        "operationId": "digest_candidates",
        "summary": "Select processed materials for a digest.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "periodStart",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "required": true
          },
          {
            "name": "periodEnd",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "required": true
          },
          {
            "name": "sourceIds",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "Comma-separated source IDs"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ai",
            "in": "query",
            "schema": {
              "type": "string",
              "description": "JSON-encoded AI filters"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digests/{id}": {
      "get": {
        "operationId": "get_digest",
        "summary": "Read a digest and generated results.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "patch": {
        "operationId": "update_digest",
        "summary": "Edit a digest draft.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digests/{id}/generate-text": {
      "post": {
        "operationId": "generate_digest_text",
        "summary": "Queue digest text generation.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digests/{id}/generate-image": {
      "post": {
        "operationId": "generate_digest_image",
        "summary": "Queue digest cover generation.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/materials/{id}/score": {
      "post": {
        "operationId": "score_material",
        "summary": "Queue AI topic scoring.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digests/{id}/document": {
      "get": {
        "operationId": "get_document",
        "summary": "Read publication document, revision and provider previews.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "put": {
        "operationId": "save_document",
        "summary": "Save a publication document using expectedRevision.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "expectedRevision": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "document": {
                    "type": "object",
                    "propertyNames": {
                      "type": "string"
                    },
                    "additionalProperties": {}
                  }
                },
                "required": [
                  "expectedRevision",
                  "document"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digests/{id}/approve": {
      "post": {
        "operationId": "approve_document",
        "summary": "Approve an exact document revision.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "revision": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "revision"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/digests/{id}/publish": {
      "post": {
        "operationId": "publish_document",
        "summary": "Queue publication of an approved revision to targetIds.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "revision": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "targetIds": {
                    "minItems": 1,
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 512
                    }
                  },
                  "logicalPublicationId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 128
                  },
                  "scheduledAt": {
                    "type": "string",
                    "format": "date-time",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                  },
                  "publisherAccountId": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 512
                  }
                },
                "required": [
                  "revision",
                  "targetIds",
                  "logicalPublicationId"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/connections": {
      "get": {
        "operationId": "list_connections",
        "summary": "List publication connections without secrets.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_discord_connection",
        "summary": "Connect a Discord webhook. Store credentials encrypted.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/connections/{id}/revoke": {
      "post": {
        "operationId": "revoke_connection",
        "summary": "Revoke a publication connection.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/targets": {
      "get": {
        "operationId": "list_targets",
        "summary": "List publication destinations.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_target",
        "summary": "Configure a publication destination.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/targets/{id}": {
      "patch": {
        "operationId": "update_target",
        "summary": "Update a publication destination.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/schedules": {
      "get": {
        "operationId": "list_schedules",
        "summary": "List publication schedules.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_schedule",
        "summary": "Create a disabled publication schedule.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/schedules/{id}/enable": {
      "post": {
        "operationId": "enable_schedule",
        "summary": "Explicitly enable automatic publication.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/schedules/{id}/pause": {
      "post": {
        "operationId": "pause_schedule",
        "summary": "Pause a publication schedule.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/schedules/{id}/trigger": {
      "post": {
        "operationId": "trigger_schedule",
        "summary": "Run a publication schedule now.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/publication-candidates": {
      "get": {
        "operationId": "list_candidates",
        "summary": "List publication candidates awaiting action.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/publication-candidates/{id}/approve": {
      "post": {
        "operationId": "approve_candidate",
        "summary": "Approve a candidate for publication.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/publication-candidates/{id}/reject": {
      "post": {
        "operationId": "reject_candidate",
        "summary": "Reject a publication candidate.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/deliveries/{id}": {
      "get": {
        "operationId": "get_delivery",
        "summary": "Read publication delivery receipts.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/deliveries/{id}/retry": {
      "post": {
        "operationId": "retry_delivery",
        "summary": "Retry delivery; uncertain outcomes require acknowledgeDuplicateRisk.",
        "x-signailist-scope": "publish",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "acknowledgeDuplicateRisk": {
                    "type": "boolean"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/publications/{id}/cancel": {
      "post": {
        "operationId": "cancel_publication",
        "summary": "Cancel a pending publication.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/jobs": {
      "get": {
        "operationId": "list_jobs",
        "summary": "Read queued and completed work.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/jobs/{id}/cancel": {
      "post": {
        "operationId": "cancel_job",
        "summary": "Cancel pending work.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/assets": {
      "get": {
        "operationId": "list_assets",
        "summary": "List stored images.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "upload_asset",
        "summary": "Upload an image asset.",
        "x-signailist-scope": "run",
        "x-signailist-paid": true,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/signals": {
      "get": {
        "operationId": "list_signals",
        "summary": "List signal and notification rules.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "post": {
        "operationId": "create_signal",
        "summary": "Create a disabled notification rule.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/signals/{id}": {
      "patch": {
        "operationId": "update_signal",
        "summary": "Update notification settings.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/signals/{id}/enable": {
      "post": {
        "operationId": "enable_signal",
        "summary": "Enable a notification rule.",
        "x-signailist-scope": "run",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/signals/{id}/pause": {
      "post": {
        "operationId": "pause_signal",
        "summary": "Pause a notification rule.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/billing/summary": {
      "get": {
        "operationId": "billing_summary",
        "summary": "Read workspace balance and spending.",
        "x-signailist-scope": "billing:read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "maximum": 3650
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/billing/usage": {
      "get": {
        "operationId": "billing_usage",
        "summary": "Read usage and operation history.",
        "x-signailist-scope": "billing:read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "days",
            "in": "query",
            "schema": {
              "type": "integer",
              "default": 30,
              "maximum": 3650
            }
          },
          {
            "name": "page",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "default": 1
            }
          },
          {
            "name": "pageSize",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 20
            }
          },
          {
            "name": "groupBy",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "operation",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "platform",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sourceId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/jobs/{id}": {
      "get": {
        "operationId": "get_job",
        "summary": "Read a job status and progress without internal payloads.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/models": {
      "get": {
        "operationId": "list_models",
        "summary": "List current curated AI model choices for new configurations.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/reservations": {
      "get": {
        "operationId": "list_reservations",
        "summary": "Read reservations and interrupted work with cursor pagination.",
        "x-signailist-scope": "billing:read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/capabilities": {
      "get": {
        "operationId": "capabilities",
        "summary": "List capabilities and workflow guidance.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/external-sources": {
      "post": {
        "operationId": "create_external_source",
        "summary": "Create a private external input source.",
        "x-signailist-scope": "configure",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "title": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 160
                  }
                },
                "required": [
                  "title"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/external-sources/{id}/items": {
      "post": {
        "operationId": "ingest_materials",
        "summary": "Accept up to 50 versioned text materials.",
        "x-signailist-scope": "ingest",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "items": {
                    "minItems": 1,
                    "maxItems": 50,
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "externalId": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 256
                        },
                        "version": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 128
                        },
                        "title": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 1000
                        },
                        "text": {
                          "type": "string",
                          "minLength": 1,
                          "maxLength": 65536
                        },
                        "publishedAt": {
                          "type": "string",
                          "format": "date-time",
                          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
                        },
                        "url": {
                          "type": "string",
                          "format": "uri"
                        },
                        "metadata": {
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {}
                        }
                      },
                      "required": [
                        "externalId",
                        "version",
                        "title",
                        "text",
                        "publishedAt"
                      ],
                      "additionalProperties": false
                    }
                  }
                },
                "required": [
                  "items"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/budget": {
      "get": {
        "operationId": "budget",
        "summary": "Read available and reserved balance.",
        "x-signailist-scope": "billing:read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/estimates": {
      "post": {
        "operationId": "estimate",
        "summary": "Estimate operation costs using the central pricing configuration.",
        "x-signailist-scope": "billing:read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/integration": {
      "get": {
        "operationId": "get_integration",
        "summary": "Inspect your connection and limits.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/integration/revoke": {
      "post": {
        "operationId": "revoke_integration",
        "summary": "Revoke your own connection.",
        "x-signailist-scope": "read",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/webhooks": {
      "post": {
        "operationId": "create_webhook",
        "summary": "Create a signed webhook subscription.",
        "x-signailist-scope": "webhooks",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 160
                  },
                  "url": {
                    "type": "string",
                    "format": "uri"
                  },
                  "events": {
                    "minItems": 1,
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "includeResult": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "name",
                  "url",
                  "events"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      },
      "get": {
        "operationId": "list_webhooks",
        "summary": "List webhook subscriptions.",
        "x-signailist-scope": "webhooks",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/webhooks/deliveries": {
      "get": {
        "operationId": "list_webhook_deliveries",
        "summary": "Read delivery attempts with cursor pagination.",
        "x-signailist-scope": "webhooks",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100,
              "default": 50
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/webhooks/{id}/rotate": {
      "post": {
        "operationId": "rotate_webhook",
        "summary": "Rotate secret with 24-hour overlap.",
        "x-signailist-scope": "webhooks",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/webhooks/{id}/pause": {
      "post": {
        "operationId": "pause_webhook",
        "summary": "Pause webhook delivery.",
        "x-signailist-scope": "webhooks",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/webhooks/{id}/resume": {
      "post": {
        "operationId": "resume_webhook",
        "summary": "Resume webhook delivery.",
        "x-signailist-scope": "webhooks",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    },
    "/v1/webhooks/deliveries/{id}/retry": {
      "post": {
        "operationId": "retry_webhook",
        "summary": "Retry a failed paid delivery, preserving event identity.",
        "x-signailist-scope": "webhooks",
        "x-signailist-paid": false,
        "security": [
          {
            "bearer": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "maxLength": 128
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$schema": "https://json-schema.org/draft/2020-12/schema",
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Operation result"
          },
          "201": {
            "description": "Object created"
          },
          "202": {
            "description": "Work queued"
          },
          "204": {
            "description": "Operation completed without a response body"
          },
          "400": {
            "description": "Invalid request"
          },
          "401": {
            "description": "Missing or expired credentials"
          },
          "402": {
            "description": "Insufficient balance or spending limit reached"
          },
          "403": {
            "description": "Insufficient permissions"
          },
          "404": {
            "description": "Object or operation not found"
          },
          "409": {
            "description": "Conflict or uncertain prior operation"
          },
          "413": {
            "description": "Request body too large"
          },
          "429": {
            "description": "Rate limit"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "scheme": "bearer"
      }
    }
  }
}
