{
 "openapi": "3.1.0",
 "info": {
  "title": "FirmTape Orders API",
  "version": "1.0.0",
  "description": "Every large SPX order of a session, rebuilt from the tape as an order rather than a print: legs folded back into the parent, the structure named, and each placed against the measured dealer book at the minute it printed. And POSITIONS: your short options positions judged against the market every minute. Finished sessions are free on the site; the Orders API and Team plans buy today's session and reading it from code."
 },
 "servers": [
  {
   "url": "https://firmtape.com"
  }
 ],
 "security": [
  {
   "bearer": []
  }
 ],
 "x-product": "orders",
 "x-features": [
  "orders-api",
  "order-ledger",
  "positions-panel",
  "positions-webhook"
 ],
 "components": {
  "securitySchemes": {
   "bearer": {
    "type": "http",
    "scheme": "bearer",
    "description": "An API key with the `orders` scope (`ordk_...`), made on Account, Orders, on the Orders API or Team plan."
   }
  },
  "schemas": {
   "Error": {
    "type": "object",
    "required": [
     "error"
    ],
    "properties": {
     "error": {
      "type": "object",
      "required": [
       "code",
       "message"
      ],
      "properties": {
       "code": {
        "type": "string",
        "description": "A stable code from the error catalog."
       },
       "message": {
        "type": "string",
        "description": "What happened, in words."
       }
      }
     }
    }
   },
   "Order": {
    "type": "object",
    "required": [
     "oid",
     "t"
    ],
    "properties": {
     "oid": {
      "type": "string",
      "description": "Stable id of the parent order within the session."
     },
     "t": {
      "type": "string",
      "description": "When the parent order printed, ET (`HH:MM`)."
     },
     "g": {
      "type": [
       "number",
       "null"
      ],
      "description": "Dealer gamma the order ADDED, $M per index point. Null when it could not be priced (usually inside the last half hour of its own expiry). Null is not zero.",
      "x-unit": "$M per index point"
     },
     "kind": {
      "type": "string",
      "description": "The structure, from package reconstruction rather than leg count: `vertical`, `straddle`, `iron_condor`, `single` and the rest."
     },
     "legs": {
      "type": "string",
      "description": "The contract, for reading: `7740P/7750P`."
     },
     "lg": {
      "type": "array",
      "items": {
       "type": "array"
      },
      "description": "The legs as data: `[strike, \"C\" | \"P\", sign]`. The sign is what the package rule concluded the CUSTOMER did; 0 means it could not tell, never flat."
     },
     "exp": {
      "type": [
       "string",
       "null"
      ],
      "description": "The expiry carrying most of the order's gamma."
     },
     "size": {
      "type": [
       "integer",
       "null"
      ],
      "description": "Contracts in the parent order."
     },
     "net": {
      "type": [
       "number",
       "null"
      ],
      "description": "Net premium; a spread at its net.",
      "x-unit": "$M"
     },
     "flip": {
      "type": [
       "number",
       "null"
      ],
      "description": "Index points from the zero-gamma flip at that minute.",
      "x-unit": "index points"
     },
     "side": {
      "type": [
       "string",
       "null"
      ],
      "enum": [
       "over",
       "under",
       null
      ],
      "description": "Which side of the flip."
     }
    }
   },
   "Ledger": {
    "type": "object",
    "required": [
     "day",
     "orders"
    ],
    "properties": {
     "day": {
      "type": "string",
      "description": "The ET trading day."
     },
     "sym": {
      "type": "string",
      "description": "`SPX`: an order is placed against the measured book, which only SPX has."
     },
     "min_premium": {
      "type": "number",
      "description": "The premium floor the ledger was built at.",
      "x-unit": "USD"
     },
     "asof": {
      "type": [
       "string",
       "null"
      ],
      "description": "When the ledger was last rebuilt, ET."
     },
     "orders": {
      "type": "array",
      "items": {
       "$ref": "#/components/schemas/Order"
      },
      "description": "Sorted by what the order did to the book, largest first; unpriced orders after them."
     },
     "stats": {
      "type": "object",
      "description": "The whole session's counts, not the page returned.",
      "properties": {
       "n": {
        "type": "integer",
        "description": "Orders above the floor."
       },
       "net": {
        "type": "number",
        "description": "Their net premium.",
        "x-unit": "$M"
       },
       "no_side": {
        "type": "integer",
        "description": "Orders the package rule could not orient."
       },
       "no_gamma": {
        "type": "integer",
        "description": "Orders it could not price."
       },
       "gamma_up": {
        "type": "integer",
        "description": "Orders that added gamma."
       },
       "gamma_dn": {
        "type": "integer",
        "description": "Orders that removed gamma."
       }
      }
     },
     "note": {
      "type": "string",
      "description": "Present when the day has no ledger yet: the list is empty and this says so. Not an error."
     }
    }
   },
   "Check": {
    "type": "object",
    "description": "One position judged at the minute: distances, the large orders near each short, the levels around it and the conditions with the label they add up to (TRADE, CAUTION or SKIP). Distances only, no level prices.",
    "properties": {
     "position_id": {
      "type": "string",
      "description": "The position."
     },
     "error": {
      "type": "string",
      "description": "This position could not be checked right now."
     }
    }
   },
   "Position": {
    "type": "object",
    "description": "A short options position: `kind` (`condor`, `strangle`, `put_spread`, `call_spread`), `legs` (`lp`, `sp`, `sc`, `lc`, rising), `entry` (`HH:MM` ET) and optionally `conditions`, `label`, `alert` (`{ channel: telegram | email | webhook | off, url, before }`) and `session`.",
    "properties": {
     "id": {
      "type": "string",
      "description": "`p_...`, given by `add`."
     },
     "kind": {
      "type": "string",
      "description": "`condor`, `strangle`, `put_spread` or `call_spread`.",
      "enum": [
       "condor",
       "strangle",
       "put_spread",
       "call_spread"
      ]
     },
     "legs": {
      "type": "object",
      "description": "The strikes, rising, as the kind needs them.",
      "properties": {
       "lp": {
        "type": "number",
        "description": "Long put."
       },
       "sp": {
        "type": "number",
        "description": "Short put."
       },
       "sc": {
        "type": "number",
        "description": "Short call."
       },
       "lc": {
        "type": "number",
        "description": "Long call."
       }
      }
     },
     "entry": {
      "type": "string",
      "description": "Entry minute, `HH:MM` ET."
     },
     "conditions": {
      "type": "array",
      "items": {
       "type": "object"
      },
      "description": "`[{ id, on, threshold }]`: which conditions count, and where they switch on."
     },
     "label": {
      "type": "object",
      "description": "`{ caution, skip }`: how many conditions on make each label."
     },
     "alert": {
      "type": "object",
      "description": "`{ channel: telegram | email | webhook | off, url, before }`: where the alerts go and how many minutes before entry they start."
     },
     "session": {
      "type": "string",
      "description": "`YYYY-MM-DD`: the session the strikes were set against."
     }
    }
   }
  }
 },
 "paths": {
  "/orders/api/day": {
   "get": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "ordersDay",
    "x-slug": "day",
    "summary": "One session's order ledger",
    "description": "Every large SPX order of one session, sorted by the dealer gamma it added. A day whose ledger has not run answers 200 with an empty list and a note.",
    "x-features": [
     "orders-api",
     "order-ledger"
    ],
    "x-since": "2026-09-24",
    "parameters": [
     {
      "name": "day",
      "in": "query",
      "required": true,
      "description": "The ET trading day, `YYYY-MM-DD`.",
      "schema": {
       "type": "string",
       "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
      },
      "x-error": "bad_day"
     }
    ],
    "responses": {
     "200": {
      "description": "The ledger.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Ledger"
        },
        "example": {
         "day": "2026-08-17",
         "sym": "SPX",
         "min_premium": 100000,
         "asof": "15:59:57",
         "orders": [
          {
           "oid": "p79654",
           "t": "13:43",
           "g": 7.25,
           "kind": "vertical",
           "legs": "7740P/7750P",
           "lg": [
            [
             7740,
             "P",
             1
            ],
            [
             7750,
             "P",
             -1
            ]
           ],
           "exp": "Aug 17",
           "size": 1958,
           "net": 0.15,
           "flip": 38,
           "side": "over"
          }
         ],
         "stats": {
          "n": 312,
          "net": 96.3,
          "no_side": 177,
          "no_gamma": 0,
          "gamma_up": 47,
          "gamma_dn": 74
         }
        }
       }
      }
     },
     "400": {
      "description": "`day` is not `YYYY-MM-DD`.",
      "x-codes": [
       "bad_day"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/orders/api/latest": {
   "get": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "ordersLatest",
    "x-slug": "latest",
    "summary": "The newest session's order ledger",
    "description": "The newest session the ledger has: today's while the market is open, the last finished one after the close.",
    "x-features": [
     "orders-api",
     "order-ledger"
    ],
    "x-since": "2026-09-24",
    "responses": {
     "200": {
      "description": "The ledger.",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Ledger"
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/orders/api/sessions": {
   "get": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "ordersSessions",
    "x-slug": "sessions",
    "summary": "Every day with a ledger",
    "description": "Every day an order ledger exists for, oldest first.",
    "x-features": [
     "orders-api"
    ],
    "x-since": "2026-09-24",
    "responses": {
     "200": {
      "description": "Oldest first.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "sessions"
         ],
         "properties": {
          "sessions": {
           "type": "array",
           "items": {
            "type": "string"
           },
           "description": "The days, `YYYY-MM-DD`."
          },
          "first": {
           "type": [
            "string",
            "null"
           ],
           "description": "The oldest."
          },
          "last": {
           "type": [
            "string",
            "null"
           ],
           "description": "The newest."
          }
         }
        },
        "example": {
         "sessions": [
          "2026-08-14",
          "2026-08-17"
         ],
         "first": "2026-08-14",
         "last": "2026-08-17"
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/positions": {
   "get": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "positionsList",
    "x-slug": "positions",
    "summary": "Your positions",
    "description": "All the account's positions with `catalogue` (the kinds and their legs, every condition with its unit, default threshold and range, the label counts and the alert defaults); with `id`, one position.",
    "x-features": [
     "positions-panel"
    ],
    "x-since": "2026-10-04",
    "parameters": [
     {
      "name": "id",
      "in": "query",
      "required": false,
      "description": "One position, `p_...`.",
      "schema": {
       "type": "string"
      },
      "x-error": "not_found"
     }
    ],
    "responses": {
     "200": {
      "description": "`{ positions, max, catalogue }`, or `{ position }` with `id`.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "positions": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Position"
           },
           "description": "Up to `max`."
          },
          "max": {
           "type": "integer",
           "description": "Positions an account may keep (5)."
          },
          "catalogue": {
           "type": "object",
           "description": "Kinds, conditions, label counts and alert defaults."
          },
          "position": {
           "$ref": "#/components/schemas/Position"
          }
         }
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "404": {
      "description": "No position with this id on this account.",
      "x-codes": [
       "not_found"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   },
   "post": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "positionsChange",
    "x-slug": "positions-change",
    "summary": "Add, update or remove a position",
    "description": "Everything the editor does: `{ \"op\": \"add\" | \"update\" | \"remove\", \"position\": {...} }`. A refusal says what to fix, in words.",
    "x-features": [
     "positions-panel",
     "positions-conditions"
    ],
    "x-since": "2026-10-04",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "required": [
         "op",
         "position"
        ],
        "properties": {
         "op": {
          "type": "string",
          "description": "`add`, `update` or `remove`.",
          "enum": [
           "add",
           "update",
           "remove"
          ]
         },
         "position": {
          "$ref": "#/components/schemas/Position"
         }
        }
       },
       "example": {
        "op": "add",
        "position": {
         "kind": "condor",
         "legs": {
          "lp": 7690,
          "sp": 7700,
          "sc": 7745,
          "lc": 7755
         },
         "entry": "13:45",
         "alert": {
          "channel": "webhook",
          "url": "https://your.server/hook",
          "before": 10
         }
        }
       }
      }
     }
    },
    "responses": {
     "200": {
      "description": "`{ ok: true, ... }`; `add` answers the new `id`.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "ok": {
           "type": "boolean",
           "description": "Done."
          }
         }
        }
       }
      }
     },
     "400": {
      "description": "The body cannot be used; `message` says why.",
      "x-codes": [
       "bad_json",
       "bad_op",
       "invalid"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "404": {
      "description": "No position with this id.",
      "x-codes": [
       "not_found"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "405": {
      "description": "GET or POST only.",
      "x-codes": [
       "method"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/positions/check": {
   "get": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "positionsCheck",
    "x-slug": "positions-check",
    "summary": "Check your positions at a minute",
    "description": "Each position judged at one market minute: only what was known at that minute, never anything later in the day.",
    "x-features": [
     "positions-panel",
     "positions-conditions"
    ],
    "x-since": "2026-10-04",
    "parameters": [
     {
      "name": "day",
      "in": "query",
      "required": false,
      "description": "`YYYY-MM-DD`.",
      "schema": {
       "type": "string"
      },
      "x-default": "today"
     },
     {
      "name": "t",
      "in": "query",
      "required": false,
      "description": "`HH:MM` ET.",
      "schema": {
       "type": "string"
      },
      "x-default": "the latest minute"
     },
     {
      "name": "id",
      "in": "query",
      "required": false,
      "description": "One position; without it, all of them.",
      "schema": {
       "type": "string"
      },
      "x-error": "not_found"
     }
    ],
    "responses": {
     "200": {
      "description": "One check per position.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "required": [
          "day",
          "checks"
         ],
         "properties": {
          "day": {
           "type": "string",
           "description": "The ET trading day."
          },
          "t": {
           "type": [
            "string",
            "null"
           ],
           "description": "The minute judged."
          },
          "live": {
           "type": "boolean",
           "description": "Whether the day is the live session."
          },
          "checks": {
           "type": "array",
           "items": {
            "$ref": "#/components/schemas/Check"
           },
           "description": "One per position."
          },
          "note": {
           "type": "string",
           "description": "When the day has no market minute yet."
          }
         }
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "404": {
      "description": "No position with this id.",
      "x-codes": [
       "not_found"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/positions/track": {
   "get": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "positionsTrack",
    "x-slug": "positions-track",
    "summary": "A position's label track",
    "description": "One position's label minute by minute over the hour up to `t`.",
    "x-features": [
     "positions-track"
    ],
    "x-since": "2026-10-05",
    "parameters": [
     {
      "name": "id",
      "in": "query",
      "required": true,
      "description": "The position.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "day",
      "in": "query",
      "required": false,
      "description": "`YYYY-MM-DD`.",
      "schema": {
       "type": "string"
      },
      "x-default": "today"
     },
     {
      "name": "t",
      "in": "query",
      "required": false,
      "description": "`HH:MM` ET.",
      "schema": {
       "type": "string"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "`{ day, t, id, from, points }`.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "day": {
           "type": "string",
           "description": "The day."
          },
          "t": {
           "type": [
            "string",
            "null"
           ],
           "description": "The last minute."
          },
          "id": {
           "type": "string",
           "description": "The position."
          },
          "from": {
           "type": [
            "string",
            "null"
           ],
           "description": "The first minute."
          },
          "points": {
           "type": "array",
           "items": {},
           "description": "One point a minute."
          }
         }
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/positions/entries": {
   "get": {
    "x-plan": "orders",
    "x-key": "orders",
    "x-limit": "20,000 calls a day on Orders API, 100,000 on Orders Team, per account",
    "operationId": "positionsEntries",
    "x-slug": "positions-entries",
    "summary": "A position's entry log",
    "description": "What each session's entry minute looked like for one position, with up to `replay` replayed past days.",
    "x-features": [
     "entry-log"
    ],
    "x-since": "2026-10-05",
    "parameters": [
     {
      "name": "id",
      "in": "query",
      "required": true,
      "description": "The position.",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "replay",
      "in": "query",
      "required": false,
      "description": "Past days to replay.",
      "schema": {
       "type": "integer"
      }
     }
    ],
    "responses": {
     "200": {
      "description": "The log.",
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      }
     },
     "401": {
      "description": "No key, or a revoked one.",
      "x-codes": [
       "no_key"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "403": {
      "description": "The account is not on the Orders API or Team plan.",
      "x-codes": [
       "plan"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "429": {
      "description": "The day's calls are spent.",
      "x-codes": [
       "rate"
      ],
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  }
 }
}