{"openapi":"3.1.0","info":{"title":"EdgePress Tenant API","version":"1.0.0","description":"Per-tenant CMS API. Authenticate every request with a personal access token: `Authorization: Bearer epat_...`. Create + manage tokens at `/admin/settings/api-tokens`."},"servers":[{"url":"https://{tenant}","variables":{"tenant":{"default":"your-tenant.edgepress.cc","description":"Your tenant hostname (subdomain of edgepress.cc or a custom domain)."}}}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"epat_<40>"}},"schemas":{"Post":{"type":"object","required":["id","title","slug","status"],"properties":{"id":{"type":"integer"},"title":{"type":"string"},"slug":{"type":"string"},"content":{"type":"string"},"excerpt":{"type":"string"},"status":{"type":"string","enum":["draft","published","trash"]},"featured_image":{"type":"string"},"author_id":{"type":"integer"},"category_id":{"type":"integer"},"created_at":{"type":"integer"},"updated_at":{"type":"integer"}}},"Page":{"type":"object","properties":{"id":{"type":"integer"},"title":{"type":"string"},"slug":{"type":"string"},"content":{"type":"string"},"status":{"type":"string"}}},"Media":{"type":"object","properties":{"id":{"type":"integer"},"url":{"type":"string"},"mime_type":{"type":"string"},"size_bytes":{"type":"integer"}}},"Setting":{"type":"object","properties":{"option_name":{"type":"string"},"option_value":{"type":"string"}}},"User":{"type":"object","properties":{"id":{"type":"integer"},"email":{"type":"string"},"name":{"type":"string"},"role":{"type":"string"},"status":{"type":"string"}}},"Category":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"}}},"Tag":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"slug":{"type":"string"}}},"ApiToken":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"prefix":{"type":"string"},"readOnly":{"type":"boolean"},"expiresAt":{"type":["integer","null"]},"lastUsedAt":{"type":["integer","null"]},"revoked":{"type":"boolean"},"createdAt":{"type":"integer"}}},"ApiTokenCreated":{"allOf":[{"$ref":"#/components/schemas/ApiToken"},{"type":"object","required":["token"],"properties":{"token":{"type":"string","description":"Raw token — displayed exactly once."}}}]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}},"InvalidTokenError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"enum":["invalid_token"]}}}]},"ReadOnlyTokenError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"enum":["read_only_token"]}}}]},"RateLimitError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"enum":["rate_limited"]},"retryAfter":{"type":"integer"}}}]}},"responses":{"InvalidToken":{"description":"Missing, invalid, expired, or revoked token.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidTokenError"}}},"headers":{"WWW-Authenticate":{"schema":{"type":"string"}}}},"ReadOnlyToken":{"description":"Token is read-only; only GET/HEAD are permitted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReadOnlyTokenError"}}}},"RateLimited":{"description":"Per-token rate limit exceeded (60 req/min).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"}}}}}},"paths":{"/api/admin":{"get":{"tags":["Admin"],"summary":"GET /api/admin","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Admin"],"summary":"POST /api/admin","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/admin/{path}":{"parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Admin"],"summary":"GET /api/admin/{path}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Admin"],"summary":"POST /api/admin/{path}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/admin/bulk-short-url":{"post":{"tags":["Admin"],"summary":"POST /api/admin/bulk-short-url","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/api":{"get":{"tags":["Legacy"],"summary":"GET /api/api","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Legacy"],"summary":"POST /api/api","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Legacy"],"summary":"PUT /api/api","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Legacy"],"summary":"DELETE /api/api","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/api-tokens":{"get":{"tags":["ApiTokens"],"summary":"GET /api/api-tokens","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ApiToken"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["ApiTokens"],"summary":"POST /api/api-tokens","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiTokenCreated"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/api-tokens/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"delete":{"tags":["ApiTokens"],"summary":"DELETE /api/api-tokens/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/attribution":{"get":{"tags":["Attribution"],"summary":"GET /api/attribution","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/audit-log":{"get":{"tags":["AuditLog"],"summary":"GET /api/audit-log","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/auth":{"get":{"tags":["Auth"],"summary":"GET /api/auth","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Auth"],"summary":"POST /api/auth","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Auth"],"summary":"DELETE /api/auth","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/blocks":{"get":{"tags":["Blocks"],"summary":"GET /api/blocks","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/blocks/{type}/schema":{"parameters":[{"name":"type","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Blocks"],"summary":"GET /api/blocks/{type}/schema","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/columnists":{"get":{"tags":["Users"],"summary":"GET /api/columnists","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/daily-cartoons":{"get":{"tags":["DailyCartoons"],"summary":"GET /api/daily-cartoons","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["DailyCartoons"],"summary":"POST /api/daily-cartoons","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["DailyCartoons"],"summary":"PUT /api/daily-cartoons","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/daily-cartoons/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["DailyCartoons"],"summary":"GET /api/daily-cartoons/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["DailyCartoons"],"summary":"PUT /api/daily-cartoons/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["DailyCartoons"],"summary":"DELETE /api/daily-cartoons/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/daily-cartoons/{id}/reorder":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["DailyCartoons"],"summary":"POST /api/daily-cartoons/{id}/reorder","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/dashboard/stats":{"get":{"tags":["Dashboard"],"summary":"GET /api/dashboard/stats","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/devices":{"get":{"tags":["Devices"],"summary":"GET /api/devices","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["Devices"],"summary":"PUT /api/devices","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Devices"],"summary":"DELETE /api/devices","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/error-report":{"post":{"tags":["Meta"],"summary":"POST /api/error-report","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/feature-image-domains":{"get":{"tags":["FeatureImageDomains"],"summary":"GET /api/feature-image-domains","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["FeatureImageDomains"],"summary":"POST /api/feature-image-domains","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/feature-image-domains/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"delete":{"tags":["FeatureImageDomains"],"summary":"DELETE /api/feature-image-domains/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/graphql":{"get":{"tags":["GraphQL"],"summary":"GET /api/graphql","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["GraphQL"],"summary":"POST /api/graphql","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/invite-codes":{"get":{"tags":["InviteCodes"],"summary":"GET /api/invite-codes","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["InviteCodes"],"summary":"POST /api/invite-codes","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/invite-codes/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"delete":{"tags":["InviteCodes"],"summary":"DELETE /api/invite-codes/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/invite-codes/verify":{"get":{"tags":["InviteCodes"],"summary":"GET /api/invite-codes/verify","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/media":{"get":{"tags":["Media"],"summary":"GET /api/media","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Media"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/media/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Media"],"summary":"GET /api/media/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["Media"],"summary":"PUT /api/media/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Media"],"summary":"DELETE /api/media/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/media/{id}/og-variant":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["Media"],"summary":"POST /api/media/{id}/og-variant","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/media/upload":{"post":{"tags":["Media"],"summary":"POST /api/media/upload","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Media"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}}}}},"/api/openapi.json":{"get":{"tags":["Meta"],"summary":"GET /api/openapi.json","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/page-categories":{"get":{"tags":["Pages"],"summary":"GET /api/page-categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Category"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Pages"],"summary":"POST /api/page-categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Pages"],"summary":"PUT /api/page-categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Pages"],"summary":"DELETE /api/page-categories","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/page-tags":{"get":{"tags":["Pages"],"summary":"GET /api/page-tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Pages"],"summary":"POST /api/page-tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Pages"],"summary":"PUT /api/page-tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Pages"],"summary":"DELETE /api/page-tags","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/pages":{"get":{"tags":["Pages"],"summary":"GET /api/pages","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Page"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Pages"],"summary":"POST /api/pages","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/pages/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Pages"],"summary":"GET /api/pages/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["Pages"],"summary":"PUT /api/pages/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Pages"],"summary":"DELETE /api/pages/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/pages/categories":{"get":{"tags":["Pages"],"summary":"GET /api/pages/categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Category"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Pages"],"summary":"POST /api/pages/categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Pages"],"summary":"PUT /api/pages/categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Pages"],"summary":"DELETE /api/pages/categories","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/pages/tags":{"get":{"tags":["Pages"],"summary":"GET /api/pages/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Pages"],"summary":"POST /api/pages/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Pages"],"summary":"PUT /api/pages/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Pages"],"summary":"DELETE /api/pages/tags","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/podcasts":{"get":{"tags":["Podcasts"],"summary":"GET /api/podcasts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Podcasts"],"summary":"POST /api/podcasts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Podcasts"],"summary":"PUT /api/podcasts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/podcasts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Podcasts"],"summary":"GET /api/podcasts/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["Podcasts"],"summary":"PUT /api/podcasts/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Podcasts"],"summary":"DELETE /api/podcasts/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/podcasts/{id}/short-url":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["Podcasts"],"summary":"POST /api/podcasts/{id}/short-url","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/podcasts/admin":{"get":{"tags":["Podcasts"],"summary":"GET /api/podcasts/admin","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/podcasts/bulk":{"post":{"tags":["Podcasts"],"summary":"POST /api/podcasts/bulk","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/podcasts/categories":{"get":{"tags":["Podcasts"],"summary":"GET /api/podcasts/categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Category"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/podcasts/tags":{"get":{"tags":["Podcasts"],"summary":"GET /api/podcasts/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Podcasts"],"summary":"POST /api/podcasts/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Podcasts"],"summary":"DELETE /api/podcasts/tags","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/posts":{"get":{"tags":["Posts"],"summary":"GET /api/posts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Post"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Posts"],"summary":"POST /api/posts","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/posts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Posts"],"summary":"GET /api/posts/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["Posts"],"summary":"PUT /api/posts/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Posts"],"summary":"DELETE /api/posts/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/posts/{id}/short-url":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["Posts"],"summary":"POST /api/posts/{id}/short-url","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/posts/bulk-short-url":{"post":{"tags":["Posts"],"summary":"POST /api/posts/bulk-short-url","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/posts/categories":{"get":{"tags":["Posts"],"summary":"GET /api/posts/categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Category"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Posts"],"summary":"POST /api/posts/categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Posts"],"summary":"PUT /api/posts/categories","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Posts"],"summary":"DELETE /api/posts/categories","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/posts/categories/{slug}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Posts"],"summary":"GET /api/posts/categories/{slug}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/posts/slug/{slug}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Posts"],"summary":"GET /api/posts/slug/{slug}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Post"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/posts/tags":{"get":{"tags":["Posts"],"summary":"GET /api/posts/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Posts"],"summary":"POST /api/posts/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Posts"],"summary":"PUT /api/posts/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Posts"],"summary":"DELETE /api/posts/tags","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/posts/tags/{slug}":{"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Posts"],"summary":"GET /api/posts/tags/{slug}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/register":{"post":{"tags":["Auth"],"summary":"POST /api/register","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/search":{"get":{"tags":["Search"],"summary":"GET /api/search","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/search/{path}":{"parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["Search"],"summary":"GET /api/search/{path}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/search/admin":{"get":{"tags":["Search"],"summary":"GET /api/search/admin","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/search/advanced":{"get":{"tags":["Search"],"summary":"GET /api/search/advanced","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/search/hebrew":{"get":{"tags":["Search"],"summary":"GET /api/search/hebrew","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/search/recent":{"get":{"tags":["Search"],"summary":"GET /api/search/recent","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Search"],"summary":"POST /api/search/recent","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Search"],"summary":"DELETE /api/search/recent","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/search/suggest":{"get":{"tags":["Search"],"summary":"GET /api/search/suggest","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/sessions":{"get":{"tags":["Sessions"],"summary":"GET /api/sessions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"tags":["Sessions"],"summary":"DELETE /api/sessions","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/sessions/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"delete":{"tags":["Sessions"],"summary":"DELETE /api/sessions/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/settings":{"get":{"tags":["Settings"],"summary":"GET /api/settings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Setting"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Settings"],"summary":"POST /api/settings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Setting"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Settings"],"summary":"PUT /api/settings","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Setting"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Settings"],"summary":"DELETE /api/settings","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/settings/public":{"get":{"tags":["Settings"],"summary":"GET /api/settings/public","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/settings/public-signup":{"get":{"tags":["Settings"],"summary":"GET /api/settings/public-signup","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]},"put":{"tags":["Settings"],"summary":"PUT /api/settings/public-signup","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/staff-invites":{"get":{"tags":["StaffInvites"],"summary":"GET /api/staff-invites","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["StaffInvites"],"summary":"POST /api/staff-invites","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/staff-invites/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"delete":{"tags":["StaffInvites"],"summary":"DELETE /api/staff-invites/{id}","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/staff-invites/{id}/resend":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["StaffInvites"],"summary":"POST /api/staff-invites/{id}/resend","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/staff-invites/verify":{"get":{"tags":["StaffInvites"],"summary":"GET /api/staff-invites/verify","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/tags":{"get":{"tags":["Tags"],"summary":"GET /api/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Tags"],"summary":"POST /api/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Tags"],"summary":"PUT /api/tags","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Tags"],"summary":"DELETE /api/tags","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/theme/tokens":{"get":{"tags":["Theme"],"summary":"GET /api/theme/tokens","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[]}},"/api/users":{"get":{"tags":["Users"],"summary":"GET /api/users","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/User"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Users"],"summary":"POST /api/users","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Users"],"summary":"PUT /api/users","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Users"],"summary":"DELETE /api/users","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/users/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"patch":{"tags":["Users"],"summary":"PATCH /api/users/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/users/avatar":{"post":{"tags":["Users"],"summary":"POST /api/users/avatar","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Users"],"summary":"DELETE /api/users/avatar","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/users/me":{"patch":{"tags":["Users"],"summary":"PATCH /api/users/me","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/users/pen-names":{"get":{"tags":["Users"],"summary":"GET /api/users/pen-names","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["Users"],"summary":"POST /api/users/pen-names","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"put":{"tags":["Users"],"summary":"PUT /api/users/pen-names","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["Users"],"summary":"DELETE /api/users/pen-names","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/users/reset-password":{"post":{"tags":["Users"],"summary":"POST /api/users/reset-password","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/xtform/admins":{"get":{"tags":["XtForm"],"summary":"GET /api/xtform/admins","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/xtform/connect":{"post":{"tags":["XtForm"],"summary":"POST /api/xtform/connect","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/xtform/disconnect":{"post":{"tags":["XtForm"],"summary":"POST /api/xtform/disconnect","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/xtform/forms":{"get":{"tags":["XtForm"],"summary":"GET /api/xtform/forms","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"type":"object"}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["XtForm"],"summary":"POST /api/xtform/forms","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/xtform/forms/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["XtForm"],"summary":"GET /api/xtform/forms/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"tags":["XtForm"],"summary":"PUT /api/xtform/forms/{id}","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/xtform/forms/{id}/edit-url":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["XtForm"],"summary":"POST /api/xtform/forms/{id}/edit-url","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/xtform/forms/{id}/permissions":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["XtForm"],"summary":"GET /api/xtform/forms/{id}/permissions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"tags":["XtForm"],"summary":"POST /api/xtform/forms/{id}/permissions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}},"delete":{"tags":["XtForm"],"summary":"DELETE /api/xtform/forms/{id}/permissions","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/xtform/forms/{id}/publish":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"post":{"tags":["XtForm"],"summary":"POST /api/xtform/forms/{id}/publish","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"403":{"$ref":"#/components/responses/ReadOnlyToken"},"429":{"$ref":"#/components/responses/RateLimited"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}}}},"/api/xtform/forms/{id}/submissions":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"get":{"tags":["XtForm"],"summary":"GET /api/xtform/forms/{id}/submissions","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/api/xtform/status":{"get":{"tags":["XtForm"],"summary":"GET /api/xtform/status","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"$ref":"#/components/responses/InvalidToken"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}