{
  "openapi": "3.1.0",
  "info": {
    "title": "IQ Apparatus REST API",
    "version": "1.0.0",
    "description": "Public REST API for CE courses, enrollments, progress, certificates, transactions and live events. Responses use a {success, data, error} envelope."
  },
  "externalDocs": {
    "description": "API documentation",
    "url": "https://iqapparatus.com/docs/api"
  },
  "servers": [
    {
      "url": "https://aeljuvrsbvkajosclvxs.supabase.co/functions/v1"
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "Send your API key as a Bearer value in the Authorization header."
      }
    },
    "schemas": {
      "Envelope": {
        "type": "object",
        "required": [
          "success"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "data": {},
          "error": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    }
  },
  "paths": {
    "/api-courses": {
      "get": {
        "operationId": "courses-get",
        "summary": "Courses API (GET)",
        "description": "Create, manage, and query CE courses and continuing education activities",
        "tags": [
          "Courses"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "courses:read",
          "courses:write"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      },
      "post": {
        "operationId": "courses-post",
        "summary": "Courses API (POST)",
        "description": "Create, manage, and query CE courses and continuing education activities",
        "tags": [
          "Courses"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "courses:read",
          "courses:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "put": {
        "operationId": "courses-put",
        "summary": "Courses API (PUT)",
        "description": "Create, manage, and query CE courses and continuing education activities",
        "tags": [
          "Courses"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "courses:read",
          "courses:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "courses-delete",
        "summary": "Courses API (DELETE)",
        "description": "Create, manage, and query CE courses and continuing education activities",
        "tags": [
          "Courses"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "courses:read",
          "courses:write"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          }
        ]
      }
    },
    "/api-course-content": {
      "get": {
        "operationId": "course-content-get",
        "summary": "Course Content API (GET)",
        "description": "Fetch course phases with HTML content and quiz questions for native rendering in your app. Answer keys are stripped server-side.",
        "tags": [
          "Content"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "content:read"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    },
    "/api-enrollments": {
      "get": {
        "operationId": "enrollments-get",
        "summary": "Enrollments / Sales API (GET)",
        "description": "Manage learner enrollments, track sales, and handle payment status for courses",
        "tags": [
          "Enrollments"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "enrollments:read",
          "enrollments:write"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      },
      "post": {
        "operationId": "enrollments-post",
        "summary": "Enrollments / Sales API (POST)",
        "description": "Manage learner enrollments, track sales, and handle payment status for courses",
        "tags": [
          "Enrollments"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "enrollments:read",
          "enrollments:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "put": {
        "operationId": "enrollments-put",
        "summary": "Enrollments / Sales API (PUT)",
        "description": "Manage learner enrollments, track sales, and handle payment status for courses",
        "tags": [
          "Enrollments"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "enrollments:read",
          "enrollments:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "enrollments-delete",
        "summary": "Enrollments / Sales API (DELETE)",
        "description": "Manage learner enrollments, track sales, and handle payment status for courses",
        "tags": [
          "Enrollments"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "enrollments:read",
          "enrollments:write"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          }
        ]
      }
    },
    "/api-submit-progress": {
      "post": {
        "operationId": "submit-progress-post",
        "summary": "Submit Progress API (POST)",
        "description": "Submit phase completions and quiz answers. Server validates answers, calculates scores, and triggers certificate generation.",
        "tags": [
          "Progress"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "progress:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api-progress": {
      "get": {
        "operationId": "progress-get",
        "summary": "Progress API (GET)",
        "description": "Track learner progress through courses, view phase completions and time spent",
        "tags": [
          "Progress"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "progress:read"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    },
    "/api-certificates": {
      "get": {
        "operationId": "certificates-get",
        "summary": "Certificates API (GET)",
        "description": "Retrieve and verify completion certificates for learners who finished courses",
        "tags": [
          "Certificates"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "certificates:read"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    },
    "/api-transactions": {
      "get": {
        "operationId": "transactions-get",
        "summary": "Transactions API (GET)",
        "description": "Query payment history, revenue data, and transaction status for course sales",
        "tags": [
          "Transactions"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "transactions:read"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    },
    "/api-events": {
      "get": {
        "operationId": "events-get",
        "summary": "Live Events API (GET)",
        "description": "List virtual (Zoom) and in-person live events with schedule, venue, capacity, pricing, and the CE activity they award credit for",
        "tags": [
          "Live Events"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "events:read"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    },
    "/api-event-registrations": {
      "get": {
        "operationId": "event-registrations-get",
        "summary": "Registrations & Attendance API (GET)",
        "description": "Register learners for live events and read back verified attendance, duration, and check-in times used for live-activity credit",
        "tags": [
          "Live Events"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "registrations:read",
          "registrations:write"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      },
      "post": {
        "operationId": "event-registrations-post",
        "summary": "Registrations & Attendance API (POST)",
        "description": "Register learners for live events and read back verified attendance, duration, and check-in times used for live-activity credit",
        "tags": [
          "Live Events"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "registrations:read",
          "registrations:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "/api-payouts": {
      "get": {
        "operationId": "payouts-get",
        "summary": "Payouts API (GET)",
        "description": "Read marketplace payouts and Stripe Connect revenue-share transfers for your provider organization",
        "tags": [
          "Payouts"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "payouts:read"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    },
    "/api-webhooks": {
      "get": {
        "operationId": "webhooks-get",
        "summary": "Webhooks API (GET)",
        "description": "Register, list, update, and delete webhook endpoints for event-driven integrations",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "webhooks:read",
          "webhooks:write"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      },
      "post": {
        "operationId": "webhooks-post",
        "summary": "Webhooks API (POST)",
        "description": "Register, list, update, and delete webhook endpoints for event-driven integrations",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "webhooks:read",
          "webhooks:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "put": {
        "operationId": "webhooks-put",
        "summary": "Webhooks API (PUT)",
        "description": "Register, list, update, and delete webhook endpoints for event-driven integrations",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "webhooks:read",
          "webhooks:write"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object"
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "webhooks-delete",
        "summary": "Webhooks API (DELETE)",
        "description": "Register, list, update, and delete webhook endpoints for event-driven integrations",
        "tags": [
          "Webhooks"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (60 req/min)"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ],
        "x-scopes": [
          "webhooks:read",
          "webhooks:write"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          }
        ]
      }
    },
    "/get-subscription-plans": {
      "get": {
        "operationId": "subscription-plans-get",
        "summary": "Subscription Plans (GET)",
        "description": "Retrieve active subscription plans with pricing and feature limits — no API key required",
        "tags": [
          "Utility"
        ],
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope"
                }
              }
            }
          },
          "429": {
            "description": "Rate limited (Unlimited)"
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resource id"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ]
      }
    }
  }
}