{"openapi":"3.1.0","info":{"title":"Interlined List API","version":"1.0.0","description":"REST /v1 for the IL web BFF, native apps, the `il` CLI and third-party developers. Conventions: see 05-api-specification.md §1."},"servers":[{"url":"https://interlinedlist.com"}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"A Substratal app token (JWT, aud=app_interlined-list), an IL device token (ilt_…) or a personal access token (ilp_…)."}},"schemas":{},"parameters":{}},"paths":{"/health":{"get":{"summary":"Shallow health check (no database call)","tags":["meta"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/limits":{"get":{"summary":"Public fair-use limits and accepted media formats (the only source for help, pricing and composer)","tags":["meta"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"Limits","content":{"application/json":{"schema":{"type":"object","properties":{"limits":{"type":"object","additionalProperties":{}},"media_formats":{}},"required":["limits"]}}}},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me":{"get":{"summary":"The signed-in user: projection, profile, handle, access, standing","tags":["me"],"security":[{"bearer":[]}],"responses":{"200":{"description":"Me","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^u_[0-7][0-9A-HJKMNP-TV-Z]{25}$"},"handle":{"type":"string","pattern":"^[a-z0-9_]{3,30}$"},"display_name":{"type":"string","maxLength":100},"avatar_url":{"type":["string","null"],"format":"uri"},"header_url":{"type":["string","null"],"format":"uri"},"bio":{"type":["string","null"],"maxLength":500},"links":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"label":{"type":"string","maxLength":60},"verified":{"type":"boolean","default":false}},"required":["url"]},"maxItems":4},"pronouns":{"type":["string","null"],"maxLength":40},"location_label":{"type":["string","null"],"maxLength":100},"is_private":{"type":"boolean"},"inactive":{"type":"boolean"},"redacted":{"type":"boolean"},"counts":{"type":"object","properties":{"messages":{"type":"integer","minimum":0},"followers":{"type":"integer","minimum":0},"following":{"type":"integer","minimum":0}},"required":["messages","followers","following"]},"pinned":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["message","list","document"]},"id":{"type":"string"}},"required":["type","id"]},"maxItems":3},"created_at":{"type":"string","format":"date-time"},"viewer":{"type":"object","properties":{"following":{"type":"string","enum":["none","pending","accepted"]},"followed_by":{"type":"boolean"},"blocking":{"type":"boolean"},"muting":{"type":"boolean"}},"required":["following","followed_by","blocking","muting"]},"substratal_user_id":{"type":"string"},"email_verified":{"type":"boolean"},"access":{"type":"string","enum":["active","none","lapsed"]},"standing":{"type":"string","enum":["active","restricted","suspended","banned"]},"timezone":{"type":["string","null"]},"locale":{"type":["string","null"]}},"required":["id","handle","display_name","avatar_url","header_url","bio","links","pronouns","location_label","is_private","inactive","redacted","counts","pinned","created_at","substratal_user_id","email_verified","access","standing","timezone","locale"]}}}},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/capabilities":{"get":{"summary":"Capabilities from the single server-side function","tags":["me"],"security":[{"bearer":[]}],"responses":{"200":{"description":"Capabilities","content":{"application/json":{"schema":{"type":"object","properties":{"access":{"type":"string","enum":["active","none","lapsed"]},"roles":{"type":"array","items":{"type":"string"}},"permissions":{"type":"array","items":{"type":"string"}},"standing":{"type":"string","enum":["active","restricted","suspended","banned"]},"email_verified":{"type":"boolean"},"limits":{"type":"object","additionalProperties":{}},"can":{"type":"object","additionalProperties":{"type":"boolean"}},"denials":{"type":"object","additionalProperties":{"type":"string","enum":["subscription_required","email_unverified","standing_restricted","standing_suspended","rate_limited","limit_reached","scope_missing","forbidden"]}}},"required":["access","roles","permissions","standing","email_verified","limits","can","denials"]}}}},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/profile":{"patch":{"summary":"Update profile (display_name writes through to SubstratalApps)","tags":["me"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string","minLength":1,"maxLength":100},"bio":{"type":["string","null"],"maxLength":500},"links":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"label":{"type":"string","maxLength":60}},"required":["url"]},"maxItems":4},"pronouns":{"type":["string","null"],"maxLength":40},"location_label":{"type":["string","null"],"maxLength":100},"pinned":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["message","list","document"]},"id":{"type":"string"}},"required":["type","id"]},"maxItems":3}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/handle":{"put":{"summary":"Claim or change the handle (409 handle_taken, 429 once per 30 days)","tags":["me"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string","minLength":1,"maxLength":40}},"required":["handle"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/handles/{handle}/availability":{"get":{"summary":"Is a handle available?","tags":["me"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"handle","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/settings":{"get":{"summary":"Per-app settings (resolved/overrides) plus SQL-projected fields","tags":["me"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"patch":{"summary":"Update settings; SQL-filtered keys are copied onto the users row in the same request","tags":["me"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"is_private":{"type":"boolean"},"dm_policy":{"type":"string","enum":["mutuals","following","anyone"]},"mention_policy":{"type":"string","enum":["anyone","following","nobody"]},"discoverable":{"type":"boolean"},"noindex":{"type":"boolean"},"timezone":{"type":"string","minLength":1,"maxLength":64}},"additionalProperties":{}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/header/uploads":{"post":{"summary":"Start a profile header image upload (IL media flow)","tags":["me"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content_type":{"type":"string"},"bytes":{"type":"integer","exclusiveMinimum":0}},"required":["content_type","bytes"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/avatar/uploads":{"post":{"summary":"Start an avatar upload (SubstratalApps avatar flow) (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/avatar/uploads/{id}/complete":{"post":{"summary":"Complete an avatar upload (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/avatar":{"delete":{"summary":"Remove the avatar (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/sessions":{"get":{"summary":"List platform sessions (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/sessions/{id}":{"delete":{"summary":"Revoke a session (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/sessions/revoke-all":{"post":{"summary":"Revoke all other sessions (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/mfa/totp":{"post":{"summary":"Start TOTP enrollment (step-up) (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/mfa/totp/confirm":{"post":{"summary":"Confirm TOTP (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/mfa/totp/disable":{"post":{"summary":"Disable TOTP (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/email":{"post":{"summary":"Change email (pending verification) (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/password":{"post":{"summary":"Change password (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/subscription":{"get":{"summary":"SubstratalApps subscription summary (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/subscription/portal":{"post":{"summary":"Billing portal session (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/deletion":{"post":{"summary":"Request account deletion (step-up) (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Cancel account deletion (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/devices":{"get":{"summary":"Push devices (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Register a push device (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/devices/{id}":{"delete":{"summary":"Remove a push device (proxied to SubstratalApps)","tags":["me","proxied"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/media/uploads":{"post":{"summary":"Start an upload: presigned S3 POST to raw/","tags":["media"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["image","video","file"],"default":"image"},"content_type":{"type":"string","minLength":3,"maxLength":100},"bytes":{"type":"integer","exclusiveMinimum":0},"purpose":{"type":"string","enum":["message","dm","document","list_cell","header","blog_hero","import"],"default":"message"}},"required":["content_type","bytes"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/media/{id}":{"get":{"summary":"Media status, variants and (signed) URLs","tags":["media"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"patch":{"summary":"Set alt text","tags":["media"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alt_text":{"type":["string","null"],"maxLength":1500}},"required":["alt_text"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/media/{id}/alt-text:suggest":{"post":{"summary":"AI alt-text suggestion (async; ai.done on user channel)","tags":["media","ai"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/media/cookies":{"post":{"summary":"CloudFront signed cookies for private media (/media/s/*), 1 hour; the BFF sets them","tags":["media"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/ai/status":{"get":{"summary":"AI availability and remaining quota","tags":["ai"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/ai/preview":{"post":{"summary":"Start an AI preview (202; streamed as ai.delta / ai.done on /user/{usr})","tags":["ai"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"feature":{"type":"string","enum":["compose_assist","suggest_tags","alt_text","summarize","generate_list","generate_document","schedule_series","rewrite","translate"]},"input":{},"options":{"type":"object","additionalProperties":{},"default":{}}},"required":["feature"]}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"type":"object","properties":{"generation_id":{"type":"string"},"channel":{"type":"string"}},"required":["generation_id","channel"]}}}},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/ai/confirm":{"post":{"summary":"Apply a preview (creates list, docs, scheduled series); counts as one action","tags":["ai"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"generation_id":{"type":"string"},"edits":{}},"required":["generation_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/suggestions":{"get":{"summary":"Who to follow","tags":["users"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{idOrHandle}":{"get":{"summary":"Public profile (viewer-aware; private accounts redacted)","tags":["users"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"idOrHandle","in":"path"}],"responses":{"200":{"description":"Profile","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^u_[0-7][0-9A-HJKMNP-TV-Z]{25}$"},"handle":{"type":"string","pattern":"^[a-z0-9_]{3,30}$"},"display_name":{"type":"string","maxLength":100},"avatar_url":{"type":["string","null"],"format":"uri"},"header_url":{"type":["string","null"],"format":"uri"},"bio":{"type":["string","null"],"maxLength":500},"links":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"label":{"type":"string","maxLength":60},"verified":{"type":"boolean","default":false}},"required":["url"]},"maxItems":4},"pronouns":{"type":["string","null"],"maxLength":40},"location_label":{"type":["string","null"],"maxLength":100},"is_private":{"type":"boolean"},"inactive":{"type":"boolean"},"redacted":{"type":"boolean"},"counts":{"type":"object","properties":{"messages":{"type":"integer","minimum":0},"followers":{"type":"integer","minimum":0},"following":{"type":"integer","minimum":0}},"required":["messages","followers","following"]},"pinned":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["message","list","document"]},"id":{"type":"string"}},"required":["type","id"]},"maxItems":3},"created_at":{"type":"string","format":"date-time"},"viewer":{"type":"object","properties":{"following":{"type":"string","enum":["none","pending","accepted"]},"followed_by":{"type":"boolean"},"blocking":{"type":"boolean"},"muting":{"type":"boolean"}},"required":["following","followed_by","blocking","muting"]}},"required":["id","handle","display_name","avatar_url","header_url","bio","links","pronouns","location_label","is_private","inactive","redacted","counts","pinned","created_at"]}}}},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/messages":{"get":{"summary":"A user's messages (?kind=posts|replies|media|dug)","tags":["users","messages"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["posts","replies","media","dug"],"default":"posts"},"required":false,"name":"kind","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/lists":{"get":{"summary":"A user's public lists","tags":["users","lists"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/documents":{"get":{"summary":"A user's public documents","tags":["users","documents"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/blog":{"get":{"summary":"A user's published blog posts","tags":["users","documents"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{handle}/lists/{slug}":{"get":{"summary":"A list by owner handle and slug (or id)","tags":["users","lists"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"handle","in":"path"},{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{handle}/documents/{slug}":{"get":{"summary":"A document by owner handle and slug (or id)","tags":["users","documents"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"handle","in":"path"},{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{handle}/blog/{slug}":{"get":{"summary":"A published blog post by slug","tags":["users","documents"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"handle","in":"path"},{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/followers":{"get":{"summary":"followers (honors privacy)","tags":["users","social"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/following":{"get":{"summary":"following (honors privacy)","tags":["users","social"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/mutuals":{"get":{"summary":"mutuals (honors privacy)","tags":["users","social"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/users/{id}/follow":{"post":{"summary":"Follow (returns accepted|pending)","tags":["social"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Unfollow or cancel a request","tags":["social"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/follow-requests":{"get":{"summary":"Follow requests (?direction=incoming|outgoing)","tags":["social"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["incoming","outgoing"],"default":"incoming"},"required":false,"name":"direction","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/follow-requests/{usr}/approve":{"post":{"summary":"Approve a follow request","tags":["social"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"usr","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/follow-requests/{usr}/reject":{"post":{"summary":"Reject a follow request","tags":["social"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"usr","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/followers/{id}":{"delete":{"summary":"Remove a follower","tags":["social"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/blocks/{id}":{"put":{"summary":"Block (removes follows both ways)","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Unblock","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/blocks":{"get":{"summary":"Blocked accounts","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/mutes/{id}":{"put":{"summary":"Mute (optionally until)","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"until":{"type":["string","null"],"format":"date-time"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Unmute","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/mutes":{"get":{"summary":"Muted accounts","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/muted-words":{"get":{"summary":"Muted words","tags":["safety"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Add a muted word","tags":["safety"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"phrase":{"type":"string","minLength":1,"maxLength":100},"whole_word":{"type":"boolean","default":false},"until":{"type":["string","null"],"format":"date-time"}},"required":["phrase"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/muted-words/{id}":{"delete":{"summary":"Remove a muted word","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages":{"post":{"summary":"Compose a message (201 with syndication[] pending). Idempotency-Key required","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255},"required":true,"name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","maxLength":5000,"default":""},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":10,"default":[]},"visibility":{"type":"string","enum":["public","followers","private","org"]},"org_id":{"type":["string","null"],"pattern":"^org_[0-9A-Za-z]+$","default":null},"content_warning":{"type":["string","null"],"maxLength":200,"default":null},"kind":{"type":"string","enum":["post","reply","quote"],"default":"post"},"parent_id":{"type":["string","null"],"pattern":"^m_[0-7][0-9A-HJKMNP-TV-Z]{25}$","default":null},"subject_id":{"type":["string","null"],"pattern":"^m_[0-7][0-9A-HJKMNP-TV-Z]{25}$","default":null},"media_ids":{"type":"array","items":{"type":"string","pattern":"^md_[0-7][0-9A-HJKMNP-TV-Z]{25}$"},"maxItems":8,"default":[]},"scheduled_at":{"type":["string","null"],"format":"date-time","default":null},"syndication":{"type":"object","properties":{"targets":{"type":"array","items":{"type":"object","properties":{"account_id":{"type":"string","pattern":"^sa_[0-7][0-9A-HJKMNP-TV-Z]{25}$"},"target_ref":{"type":["string","null"],"default":null}},"required":["account_id"]},"maxItems":20},"linkedin_link_as_first_comment":{"type":"boolean","default":false}},"required":["targets"]},"draft_id":{"type":["string","null"],"pattern":"^m_[0-7][0-9A-HJKMNP-TV-Z]{25}$","default":null}},"required":["visibility"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}":{"get":{"summary":"A message (?expand=thread_context,subject)","tags":["messages"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"patch":{"summary":"Edit content/CW/visibility (narrowing only); scheduled messages can be rescheduled. If-Match","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","maxLength":5000},"content_warning":{"type":["string","null"],"maxLength":200},"visibility":{"type":"string","enum":["public","followers","private"]},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":10},"scheduled_at":{"type":["string","null"],"format":"date-time"},"syndicate_edit":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete (soft; ?syndicated=delete|keep)","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["delete","keep"],"default":"keep"},"required":false,"name":"syndicated","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/edits":{"get":{"summary":"Edit history (if the message is visible)","tags":["messages"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/thread":{"get":{"summary":"{ancestors[], message, replies (tree, depth ≤ 6)}","tags":["messages"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/replies":{"get":{"summary":"Direct replies (paged, oldest first)","tags":["messages"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/dig":{"put":{"summary":"Dig (idempotent)","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Remove a dig","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/diggers":{"get":{"summary":"Who dug (author only, D-12)","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/push":{"post":{"summary":"Push (repost); public messages only","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Undo a push","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/bookmarks/{messageId}":{"put":{"summary":"Bookmark","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"messageId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"folder":{"type":["string","null"],"maxLength":80}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Remove a bookmark","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"messageId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/bookmarks":{"get":{"summary":"Bookmarks (?folder=)","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string"},"required":false,"name":"folder","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/drafts":{"get":{"summary":"Drafts (autosaved)","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Save a draft","tags":["messages"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","maxLength":5000,"default":""},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":10,"default":[]},"visibility":{"type":"string","enum":["public","followers","private"],"default":"public"},"content_warning":{"type":["string","null"],"maxLength":200,"default":null},"kind":{"type":"string","enum":["post","reply","quote"],"default":"post"},"parent_id":{"type":["string","null"],"default":null},"subject_id":{"type":["string","null"],"default":null},"media_ids":{"type":"array","items":{"type":"string"},"maxItems":8,"default":[]},"syndication":{}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/scheduled":{"get":{"summary":"Scheduled messages","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/drafts/{id}":{"patch":{"summary":"Update a draft","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","maxLength":5000,"default":""},"tags":{"type":"array","items":{"type":"string","minLength":1,"maxLength":64},"maxItems":10,"default":[]},"visibility":{"type":"string","enum":["public","followers","private"],"default":"public"},"content_warning":{"type":["string","null"],"maxLength":200,"default":null},"kind":{"type":"string","enum":["post","reply","quote"],"default":"post"},"parent_id":{"type":["string","null"],"default":null},"subject_id":{"type":["string","null"],"default":null},"media_ids":{"type":"array","items":{"type":"string"},"maxItems":8,"default":[]},"syndication":{}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a draft","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/drafts/{id}/publish":{"post":{"summary":"Publish a draft (optionally scheduled)","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"scheduled_at":{"type":["string","null"],"format":"date-time"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/publish-now":{"post":{"summary":"Publish a scheduled message now","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/unschedule":{"post":{"summary":"Cancel a scheduled message back to a draft","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/syndication":{"get":{"summary":"Syndication jobs for my message","tags":["messages","syndication"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/syndication/{jobId}/retry":{"post":{"summary":"Retry a failed syndication job","tags":["messages","syndication"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"jobId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/messages/{id}/report":{"post":{"summary":"Report a message (reporting again updates the report)","tags":["safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","enum":["spam","harassment","misinformation","inappropriate","illegal","other"]},"detail":{"type":["string","null"],"maxLength":2000}},"required":["reason"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/timeline":{"get":{"summary":"Timeline (?tab=following|everything|mine|followers); keyset","tags":["timeline"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["following","everything","mine","followers"],"default":"following"},"required":false,"name":"tab","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/timeline/updates":{"get":{"summary":"Count + newest id since a message id (realtime covers this normally)","tags":["timeline"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"since","in":"query"},{"schema":{"type":"string","enum":["following","everything"],"default":"following"},"required":false,"name":"tab","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/tags/trending":{"get":{"summary":"Trending tags (?window=day|week|month)","tags":["tags"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string","enum":["day","week","month"],"default":"day"},"required":false,"name":"window","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":50,"default":10},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/tags/autocomplete":{"get":{"summary":"Tag autocomplete (?q=)","tags":["tags"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":64},"required":true,"name":"q","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":20,"default":10},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/tags/{tag}/messages":{"get":{"summary":"Messages with a tag","tags":["tags"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"tag","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/tag-follows/{tag}":{"put":{"summary":"Follow a tag","tags":["tags"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"tag","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Unfollow a tag","tags":["tags"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"tag","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/tag-follows":{"get":{"summary":"Followed tags","tags":["tags"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/search":{"get":{"summary":"Search (?type=messages|people|tags|lists|documents); operators from:@h #tag has:media before:/after:YYYY-MM-DD","tags":["search"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":200},"required":true,"name":"q","in":"query"},{"schema":{"type":"string","enum":["messages","people","tags","lists","documents"],"default":"messages"},"required":false,"name":"type","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/explore":{"get":{"summary":"Trending, featured, new people","tags":["search"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/link-previews":{"get":{"summary":"Cached preview, or 202 + fetch job (link_preview.ready on the user channel)","tags":["messages"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","maxLength":2048,"format":"uri"},"required":true,"name":"url","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists":{"get":{"summary":"My lists (?scope=mine|shared|watching|all&folder_id=&q=)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["mine","shared","watching","all"],"default":"mine"},"required":false,"name":"scope","in":"query"},{"schema":{"type":"string"},"required":false,"name":"folder_id","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"q","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Create a list (fields, template, initial rows)","tags":["lists"],"security":[{"bearer":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{},"description":"See 05-api-specification.md (recursive schema)"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/graph":{"get":{"summary":"Nodes and edges for the ERD and tree views","tags":["lists"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}":{"get":{"summary":"A list (?expand=fields,views,owner,my_role)","tags":["lists"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"patch":{"summary":"Update title, description, folder, parent, visibility, collaborative, searchable_rows (manager+)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"description":{"type":["string","null"],"maxLength":5000},"folder_id":{"type":["string","null"]},"parent_list_id":{"type":["string","null"]},"visibility":{"type":"string","enum":["private","link","public"]},"collaborative":{"type":"boolean"},"searchable_rows":{"type":"boolean"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete (owner; soft, 30 days)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/restore":{"post":{"summary":"Restore a deleted list (owner)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/duplicate":{"post":{"summary":"Duplicate into my lists (fields, views, rows)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","maxLength":200},"include_rows":{"type":"boolean","default":true}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/transfer":{"post":{"summary":"Transfer ownership (owner); the previous owner keeps manager","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"to_user_id":{"type":"string"}},"required":["to_user_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/fields":{"get":{"summary":"Fields (?include_archived=true)","tags":["lists"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Add a field (manager+; If-Match schema version)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{},"description":"See 05-api-specification.md (recursive schema)"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/fields/{key}":{"patch":{"summary":"Change a field; type changes are non-destructive (?dry_run=true lists failing rows)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"key","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{},"description":"See 05-api-specification.md (recursive schema)"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Archive a field (data kept 30 days)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"key","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/fields/{key}/restore":{"post":{"summary":"Restore an archived field","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"key","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/fields:order":{"put":{"summary":"Reorder fields","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":200}},"required":["keys"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows":{"get":{"summary":"Rows with server-side filter/sort (?view_id=&filter=<RuleGroup JSON>&sort=field:asc&q=); keyset","tags":["lists"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string"},"required":false,"name":"view_id","in":"query"},{"schema":{"type":"string","maxLength":10000},"required":false,"name":"filter","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"sort","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"q","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Add a row (editor+)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","additionalProperties":{}},"after_id":{"type":"string"}},"required":["data"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows:batch":{"post":{"summary":"Add ≤ 500 rows, all-or-nothing validation (Idempotency-Key required)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":255},"required":true,"name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","additionalProperties":{}},"minItems":1,"maxItems":500}},"required":["rows"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows/{rowId}":{"get":{"summary":"A row","tags":["lists"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"patch":{"summary":"{changes, expect} + If-Match → 200, or 409 {conflicts[]} (field-level merge in one statement)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"changes":{"type":"object","additionalProperties":{}},"expect":{"type":"object","additionalProperties":{}}},"required":["changes"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a row (soft)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows/{rowId}/restore":{"post":{"summary":"Restore a deleted row","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows/{rowId}/position":{"put":{"summary":"Move a row ({after_id | before_id}; fractional index)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"after_id":{"type":["string","null"]},"before_id":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows/{rowId}/history":{"get":{"summary":"Row history","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows/{rowId}/history/{version}/restore":{"post":{"summary":"Restore a row to a historical version","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"version","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows/{rowId}/comments":{"get":{"summary":"Row comments","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Comment on a row (commenter+)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":5000},"parent_id":{"type":["string","null"]}},"required":["body"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rows/{rowId}/comments/{commentId}":{"patch":{"summary":"Edit my comment","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"commentId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":5000}},"required":["body"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a comment (author or manager)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"rowId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"commentId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/import":{"post":{"summary":"Import CSV/TSV into the list (202; import job)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"media_id":{"type":"string"},"mapping":{"type":"object","additionalProperties":{"type":"string"},"default":{}}},"required":["media_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/export":{"get":{"summary":"Export (?format=csv|json|md); small lists inline, large ones become an export job","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["csv","json","md"],"default":"csv"},"required":false,"name":"format","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/sync":{"post":{"summary":"Refresh a GitHub-backed list","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/rss":{"get":{"summary":"RSS of recent rows (public lists only)","tags":["lists"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/contributors":{"get":{"summary":"People who created or edited rows","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/views":{"get":{"summary":"Shared views plus my personal views","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Create a view (shared views need manager+)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{},"description":"See 05-api-specification.md (recursive schema)"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/views/{viewId}":{"patch":{"summary":"Update a view","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"viewId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{},"description":"See 05-api-specification.md (recursive schema)"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a view","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"viewId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/views/{viewId}/fork":{"post":{"summary":"Fork a view into a personal copy","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"viewId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/views/prefs":{"put":{"summary":"My last/default view","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"last_view_id":{"type":["string","null"]},"default_view_id":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders":{"get":{"summary":"My list folders","tags":["lists"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Create a list folder","tags":["lists"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"parent_id":{"type":["string","null"]}},"required":["name"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}":{"patch":{"summary":"Rename or move a list folder","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"parent_id":{"type":["string","null"]},"position":{"type":"string","maxLength":64}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a list folder (lists move to the parent)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-connections":{"get":{"summary":"Connections between my lists (?list_id=)","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"list_id","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Connect two lists","tags":["lists"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from_list_id":{"type":"string"},"to_list_id":{"type":"string"},"label":{"type":["string","null"],"maxLength":80}},"required":["from_list_id","to_list_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-connections/{id}":{"delete":{"summary":"Remove a connection","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-templates":{"get":{"summary":"Global and my list templates","tags":["lists"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Create a personal list template","tags":["lists"],"security":[{"bearer":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{},"description":"See 05-api-specification.md (recursive schema)"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/save-as-template":{"post":{"summary":"Save a list’s fields (and up to 10 sample rows) as a template","tags":["lists"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"include_rows":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents":{"get":{"summary":"My documents (?scope=mine|shared|all&folder_id=&q=)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["mine","shared","watching","all"],"default":"mine"},"required":false,"name":"scope","in":"query"},{"schema":{"type":"string"},"required":false,"name":"folder_id","in":"query"},{"schema":{"type":"string","maxLength":200},"required":false,"name":"q","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Create a document","tags":["documents"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"folder_id":{"type":["string","null"]},"markdown":{"type":"string"},"template_id":{"type":["string","null"]},"visibility":{"type":"string","enum":["private","link","public"],"default":"private"}},"required":["title"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/tree":{"get":{"summary":"Folders and documents as a tree","tags":["documents"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/sync":{"get":{"summary":"Delta sync for the CLI and desktop (?since=ISO)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"date-time"},"required":false,"name":"since","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Push local changes; per-item results (207)","tags":["documents"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"documents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string","minLength":1,"maxLength":200},"folder_id":{"type":["string","null"]},"markdown":{"type":"string"},"base_version":{"type":"integer"},"base_hash":{"type":"string"},"deleted":{"type":"boolean"}},"required":["title","markdown"]},"minItems":1,"maxItems":100}},"required":["documents"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/templates":{"get":{"summary":"My document templates","tags":["documents"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/templates/seed-defaults":{"post":{"summary":"Create the default templates (idempotent)","tags":["documents"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/from-template":{"post":{"summary":"New document from a template","tags":["documents"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"template_id":{"type":"string"},"title":{"type":"string","minLength":1,"maxLength":200},"folder_id":{"type":["string","null"]}},"required":["template_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}":{"get":{"summary":"Metadata + markdown (SSR/read)","tags":["documents"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"patch":{"summary":"Title, folder, visibility, slug (manager+)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"folder_id":{"type":["string","null"]},"visibility":{"type":"string","enum":["private","link","public"]},"slug":{"type":["string","null"],"pattern":"^[a-z0-9][a-z0-9-]{0,119}$"}},"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete (owner; soft)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/state":{"get":{"summary":"Binary Yjs state (compacted state merged with pending updates); ETag = update watermark","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Yjs update","content":{"application/octet-stream":{"schema":{"type":"string"}}}},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/updates":{"post":{"summary":"Append a binary Yjs update batch (≤ 256 KB); published to /doc/{id}","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/octet-stream":{"schema":{"type":"string"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/content":{"put":{"summary":"Non-collaborative write {markdown} + If-Match (merged into the Yjs doc server-side)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"markdown":{"type":"string"}},"required":["markdown"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/restore":{"post":{"summary":"Restore a deleted document (owner)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/versions":{"get":{"summary":"Version history (automatic + named snapshots)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Save a named version (snapshot written by the worker to S3 snap/)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":120}},"required":["label"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/versions/{vid}":{"get":{"summary":"A version (metadata; content is served by the worker-written snapshot)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"vid","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/versions/{vid}/restore":{"post":{"summary":"Restore a version (202; the worker applies the snapshot as a new update)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"vid","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/comments":{"get":{"summary":"Document comments (?include_resolved=true)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Comment (commenter+)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":5000},"parent_id":{"type":["string","null"]},"anchor":{"type":["object","null"],"additionalProperties":{}}},"required":["body"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/comments/{cid}":{"patch":{"summary":"Edit my comment","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"cid","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":5000}},"required":["body"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a comment (author or manager)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"cid","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/comments/{cid}/resolve":{"post":{"summary":"Resolve (or reopen with {resolved:false})","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"cid","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"resolved":{"type":"boolean","default":true}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/export":{"get":{"summary":"Export (?format=md|html|pdf); pdf is an export job","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["md","html","pdf"],"default":"md"},"required":false,"name":"format","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/publish":{"post":{"summary":"Publish as a blog post (now or at publish_at)","tags":["documents","blog"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"slug":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,119}$"},"excerpt":{"type":["string","null"],"maxLength":500},"hero_media_id":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":10,"default":[]},"publish_at":{"type":["string","null"],"format":"date-time"},"announce":{"type":["object","null"],"properties":{"syndication":{}}}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Unpublish","tags":["documents","blog"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders":{"get":{"summary":"My document folders","tags":["documents"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Create a document folder","tags":["documents"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"parent_id":{"type":["string","null"]},"is_templates":{"type":"boolean","default":false}},"required":["name"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}":{"patch":{"summary":"Rename or move a document folder","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"parent_id":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a document folder (documents move to the parent)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/export":{"post":{"summary":"Export a folder of documents (202)","tags":["documents"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"format":{"type":"string","enum":["md","html","pdf"],"default":"md"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/access":{"get":{"summary":"Effective grants, links and invites + my_role (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/grants":{"post":{"summary":"Grant access (manager+; up to your own role) (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal_type":{"type":"string","enum":["user","org"]},"principal_id":{"type":"string"},"handle":{"type":"string"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"},"notify_email":{"type":"boolean"}},"required":["principal_type","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/grants/{grantId}":{"patch":{"summary":"Change a grant (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Revoke a grant (manager+, or the grantee removing themself) (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/links":{"post":{"summary":"Create a share link; the token is shown once (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","enum":["never","1d","7d","30d"]},{"type":"null"}],"default":"never"},"password":{"type":"string","minLength":4,"maxLength":128}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/links/{linkId}":{"delete":{"summary":"Revoke a share link (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"linkId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/invites":{"post":{"summary":"Invite by email (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"]}},"required":["email","role"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/invites/{inviteId}":{"delete":{"summary":"Revoke an invite (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"inviteId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/lists/{id}/watch":{"put":{"summary":"Watch for changes (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["digest","immediate"],"default":"digest"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Stop watching (lists)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/access":{"get":{"summary":"Effective grants, links and invites + my_role (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/grants":{"post":{"summary":"Grant access (manager+; up to your own role) (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal_type":{"type":"string","enum":["user","org"]},"principal_id":{"type":"string"},"handle":{"type":"string"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"},"notify_email":{"type":"boolean"}},"required":["principal_type","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/grants/{grantId}":{"patch":{"summary":"Change a grant (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Revoke a grant (manager+, or the grantee removing themself) (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/links":{"post":{"summary":"Create a share link; the token is shown once (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","enum":["never","1d","7d","30d"]},{"type":"null"}],"default":"never"},"password":{"type":"string","minLength":4,"maxLength":128}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/links/{linkId}":{"delete":{"summary":"Revoke a share link (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"linkId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/invites":{"post":{"summary":"Invite by email (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"]}},"required":["email","role"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/invites/{inviteId}":{"delete":{"summary":"Revoke an invite (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"inviteId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/documents/{id}/watch":{"put":{"summary":"Watch for changes (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["digest","immediate"],"default":"digest"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Stop watching (documents)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/access":{"get":{"summary":"Effective grants, links and invites + my_role (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/grants":{"post":{"summary":"Grant access (manager+; up to your own role) (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal_type":{"type":"string","enum":["user","org"]},"principal_id":{"type":"string"},"handle":{"type":"string"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"},"notify_email":{"type":"boolean"}},"required":["principal_type","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/grants/{grantId}":{"patch":{"summary":"Change a grant (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Revoke a grant (manager+, or the grantee removing themself) (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/links":{"post":{"summary":"Create a share link; the token is shown once (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","enum":["never","1d","7d","30d"]},{"type":"null"}],"default":"never"},"password":{"type":"string","minLength":4,"maxLength":128}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/links/{linkId}":{"delete":{"summary":"Revoke a share link (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"linkId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/invites":{"post":{"summary":"Invite by email (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"]}},"required":["email","role"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/invites/{inviteId}":{"delete":{"summary":"Revoke an invite (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"inviteId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/list-folders/{id}/watch":{"put":{"summary":"Watch for changes (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["digest","immediate"],"default":"digest"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Stop watching (list-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/access":{"get":{"summary":"Effective grants, links and invites + my_role (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/grants":{"post":{"summary":"Grant access (manager+; up to your own role) (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"principal_type":{"type":"string","enum":["user","org"]},"principal_id":{"type":"string"},"handle":{"type":"string"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"},"notify_email":{"type":"boolean"}},"required":["principal_type","role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/grants/{grantId}":{"patch":{"summary":"Change a grant (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"],"format":"date-time"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Revoke a grant (manager+, or the grantee removing themself) (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"grantId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/links":{"post":{"summary":"Create a share link; the token is shown once (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"type":"string","enum":["viewer","commenter","editor"]},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"string","enum":["never","1d","7d","30d"]},{"type":"null"}],"default":"never"},"password":{"type":"string","minLength":4,"maxLength":128}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/links/{linkId}":{"delete":{"summary":"Revoke a share link (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"linkId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/invites":{"post":{"summary":"Invite by email (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"role":{"type":"string","enum":["viewer","commenter","editor","manager"]},"expires_at":{"type":["string","null"]}},"required":["email","role"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/invites/{inviteId}":{"delete":{"summary":"Revoke an invite (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"inviteId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/doc-folders/{id}/watch":{"put":{"summary":"Watch for changes (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["digest","immediate"],"default":"digest"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Stop watching (doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/shared/{token}":{"get":{"summary":"Resolve a share link (password in X-Share-Password)","tags":["sharing"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/shared/{token}/claim":{"post":{"summary":"Attach a link’s role to the signed-in user as a grant","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/invites/{token}/accept":{"post":{"summary":"Accept an email invite (verified email must match)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/shared-with-me":{"get":{"summary":"Everything shared with me (?type=lists|documents|list-folders|doc-folders)","tags":["sharing"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","enum":["lists","documents","list-folders","doc-folders"]},"required":false,"name":"type","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/materialize/preview":{"post":{"summary":"Propose a schema, rows and Markdown from sources","tags":["materialize"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"type":"object","properties":{"type":{"type":"string","enum":["messages","list","rows","document","selection"]},"ids":{"type":"array","items":{"type":"string"},"maxItems":500,"default":[]},"list_id":{"type":"string"},"selection":{"type":"object","properties":{"text":{"type":"string","maxLength":100000}},"required":["text"]}},"required":["type"]},"target":{"type":"string","enum":["list","document","list_and_document","message"]},"options":{"type":"object","properties":{"title":{"type":"string","maxLength":200}},"default":{},"additionalProperties":{}}},"required":["source","target"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/materialize":{"post":{"summary":"Create from sources (re-fetches and re-authorizes all sources)","tags":["materialize"],"security":[{"bearer":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":{},"description":"See 05-api-specification.md (recursive schema)"}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/notifications":{"get":{"summary":"Notification inbox (SubstratalApps), hydrated with IL objects","tags":["notifications"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","enum":["unread","read","archived"]},"required":false,"name":"state","in":"query"},{"schema":{"type":"string","maxLength":64},"required":false,"name":"category","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/notifications/unread-count":{"get":{"summary":"Unread count","tags":["notifications"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/notifications/{id}":{"patch":{"summary":"Mark read/unread/archived (IL \"delete\" archives)","tags":["notifications"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"state":{"type":"string","enum":["read","unread","archived"]}},"required":["state"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/notifications/mark-read":{"post":{"summary":"Mark read ({ids[]} or {before})","tags":["notifications"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"maxItems":100},"before":{"type":"string","format":"date-time"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/notification-preferences":{"get":{"summary":"Notification matrix (category × in_app/push/email)","tags":["notifications"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"put":{"summary":"Replace the notification matrix","tags":["notifications"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"matrix":{"type":"object","additionalProperties":{"type":"object","properties":{"in_app":{"type":"boolean"},"push":{"type":"boolean"},"email":{"type":"string","enum":["immediate","digest","off"]}},"required":["in_app","push","email"]}}},"required":["matrix"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/realtime/ticket":{"post":{"summary":"Short-lived ticket listing allowed channels (validated by interlinedlist-rt-auth)","tags":["realtime"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channels":{"type":"array","items":{"type":"string","maxLength":200},"maxItems":50,"default":[]}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/unsubscribe":{"get":{"summary":"One-click unsubscribe (?t= signed token from the email footer)","tags":["notifications"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string","maxLength":2000},"required":true,"name":"t","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"RFC 8058 List-Unsubscribe-Post target (?t=)","tags":["notifications"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/conversations":{"get":{"summary":"Conversations (?folder=inbox|trash)","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","enum":["inbox","trash"],"default":"inbox"},"required":false,"name":"folder","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Start a conversation (direct ones are de-duplicated)","tags":["dm"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"participant_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":31},"title":{"type":["string","null"],"maxLength":100}},"required":["participant_ids"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/conversations/{id}":{"get":{"summary":"A conversation","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"patch":{"summary":"Title (groups) and mute","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":["string","null"],"maxLength":100},"muted_until":{"type":["string","null"],"format":"date-time"},"mute":{"type":"boolean"}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/conversations/{id}/leave":{"post":{"summary":"Leave (moves to trash)","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/conversations/{id}/messages":{"get":{"summary":"Messages (newest first; ?cursor=)","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Send (Idempotency-Key required)","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","minLength":1,"maxLength":255},"required":true,"name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","maxLength":10000,"default":""},"media_ids":{"type":"array","items":{"type":"string"},"maxItems":8,"default":[]},"reply_to_id":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/messages/{id}":{"patch":{"summary":"Edit within 15 minutes (sender)","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":10000}},"required":["body"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete for me (moves to trash; ?for=everyone by the sender within 15 minutes)","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","enum":["me","everyone"],"default":"me"},"required":false,"name":"for","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/messages/{id}/restore":{"post":{"summary":"Restore from my trash","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/messages/{id}/reactions/{emoji}":{"put":{"summary":"React","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"emoji","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Remove reaction","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"emoji","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/conversations/{id}/read":{"post":{"summary":"Mark read up to a message","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"last_read_message_id":{"type":"string"}},"required":["last_read_message_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/unread-count":{"get":{"summary":"Unread DMs across conversations","tags":["dm"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/recipients":{"get":{"summary":"People I can message (?q=)","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","maxLength":60,"default":""},"required":false,"name":"q","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/eligibility/{userId}":{"get":{"summary":"Can I message this person?","tags":["dm"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"userId","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/dm/conversations/{id}/report":{"post":{"summary":"Report a conversation (staff may review the reported messages)","tags":["dm","safety"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","enum":["spam","harassment","misinformation","inappropriate","illegal","other"]},"detail":{"type":["string","null"],"maxLength":2000},"message_ids":{"type":"array","items":{"type":"string"},"maxItems":20,"default":[]}},"required":["reason"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/exports":{"post":{"summary":"Start an export (202; Idempotency-Key required)","tags":["exports"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255},"required":true,"name":"Idempotency-Key","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kinds":{"type":"array","items":{"type":"string","enum":["messages","lists","list_rows","documents","follows","bookmarks","blog"]},"minItems":1},"format":{"type":"string","enum":["csv","json","md"],"default":"json"},"scope":{"type":"string","enum":["mine","shared","all"],"default":"mine"},"include_platform_bundle":{"type":"boolean","default":false}},"required":["kinds"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"get":{"summary":"My exports","tags":["exports"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/exports/{id}":{"get":{"summary":"Export status with a 24 h presigned download URL when ready","tags":["exports"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/imports":{"post":{"summary":"Start an import from an uploaded file (202)","tags":["imports"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["list_csv","markdown_zip","mastodon_archive","bluesky_car"]},"media_id":{"type":"string"},"options":{"type":"object","additionalProperties":{},"default":{}}},"required":["kind","media_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/imports/{id}":{"get":{"summary":"Import status","tags":["imports"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/tokens":{"get":{"summary":"My personal access tokens","tags":["developer"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Create a personal access token (shown once; step-up)","tags":["developer"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"scopes":{"type":"array","items":{"type":"string","enum":["profile:read","profile:write","messages:read","messages:write","lists:read","lists:write","documents:read","documents:write","dm:read","dm:write","notifications:read","social:read","social:write","media:write","exports:run","webhooks:manage"]},"minItems":1},"expires_in_days":{"type":["integer","null"],"minimum":1,"maximum":365,"default":90}},"required":["name","scopes"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/tokens/{id}":{"delete":{"summary":"Revoke a token","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/webhooks":{"get":{"summary":"My webhooks","tags":["developer"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Add a webhook (the signing secret is shown once)","tags":["developer"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["message.created","message.updated","message.deleted","mention.created","follow.created","list.row.created","list.row.updated","list.row.deleted","list.updated","document.updated","document.published","share.granted","syndication.failed","export.ready"]},"minItems":1}},"required":["url","events"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/webhooks/{id}":{"patch":{"summary":"Update URL, events or status (active|paused)","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["message.created","message.updated","message.deleted","mention.created","follow.created","list.row.created","list.row.updated","list.row.deleted","list.updated","document.updated","document.published","share.granted","syndication.failed","export.ready"]},"minItems":1},"status":{"type":"string","enum":["active","paused"]}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Delete a webhook","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/webhooks/{id}/test":{"post":{"summary":"Send a test event (202)","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/webhooks/{id}/rotate-secret":{"post":{"summary":"Rotate the signing secret (shown once)","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/webhooks/{id}/deliveries":{"get":{"summary":"Delivery log (30 days)","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/webhooks/{id}/deliveries/{did}/redeliver":{"post":{"summary":"Redeliver one delivery (202)","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"did","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/me/usage":{"get":{"summary":"My API, AI and storage usage (?since=&until=&group_by=token|route)","tags":["developer"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","format":"date-time"},"required":false,"name":"since","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"until","in":"query"},{"schema":{"type":"string","enum":["token","route"],"default":"token"},"required":false,"name":"group_by","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/reports":{"get":{"summary":"Report queue (?status=)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string","enum":["open","in_review","actioned","dismissed"],"default":"open"},"required":false,"name":"status","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/reports/{id}":{"get":{"summary":"A report with snapshot and related actions","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/reports/{id}/actions":{"post":{"summary":"Act on a report","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"action":{"type":"string","enum":["dismiss","in_review","remove_content","warn","restrict","suspend","ban"]},"reason":{"type":["string","null"],"maxLength":2000},"until":{"type":["string","null"],"format":"date-time"}},"required":["action"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/appeals":{"get":{"summary":"Appeals queue","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/appeals/{id}/decide":{"post":{"summary":"Decide an appeal","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"decision":{"type":"string","enum":["upheld","overturned"]},"note":{"type":"string","maxLength":2000}},"required":["decision"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/users":{"get":{"summary":"Find users (?q=)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string","maxLength":100,"default":""},"required":false,"name":"q","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/users/{id}":{"get":{"summary":"User detail (staff view)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/users/{id}/standing":{"post":{"summary":"Change standing","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"standing":{"type":"string","enum":["active","restricted","suspended","banned"]},"reason":{"type":["string","null"],"maxLength":2000},"until":{"type":["string","null"],"format":"date-time"}},"required":["standing"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/users:bulk-standing":{"post":{"summary":"Bulk standing change","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"standing":{"type":"string","enum":["active","restricted","suspended","banned"]},"reason":{"type":["string","null"],"maxLength":2000},"until":{"type":["string","null"],"format":"date-time"},"user_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":200}},"required":["standing","user_ids"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/users:bulk-spam":{"post":{"summary":"Mark accounts as spam: ban and remove their messages","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user_ids":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":200},"dry_run":{"type":"boolean","default":true}},"required":["user_ids"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/purge":{"post":{"summary":"Purge a user’s content (dry_run by default)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"string"},"dry_run":{"type":"boolean","default":true}},"required":["user_id"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/audit":{"get":{"summary":"IL audit merged with the SubstratalApps audit (?source=il|platform|both)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string","enum":["il","platform","both"],"default":"both"},"required":false,"name":"source","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"default":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/blocked-email-domains":{"get":{"summary":"Blocked email domains","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Block an email domain","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","pattern":"^[a-z0-9.-]+\\.[a-z]{2,}$/i"},"reason":{"type":["string","null"],"maxLength":200}},"required":["domain"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/blocked-email-domains/{domain}":{"delete":{"summary":"Unblock a domain","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","parameters":[{"schema":{"type":"string"},"required":true,"name":"domain","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/reserved-handles":{"get":{"summary":"Reserved handles","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"post":{"summary":"Reserve a handle","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"handle":{"type":"string"},"reason":{"type":["string","null"],"maxLength":200}},"required":["handle"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/email-log":{"get":{"summary":"Recent email log (hashed recipients)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/syndication/health":{"get":{"summary":"Per-platform account health and 24 h posting/failure counts","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/platform/usage":{"get":{"summary":"SubstratalApps API usage (fetched on demand)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/limits":{"get":{"summary":"Effective limits and overrides","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"put":{"summary":"Replace limit overrides (camelCase keys of the limits registry; body is {overrides} or the overrides object)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/flags":{"get":{"summary":"Feature flags","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"put":{"summary":"Replace feature flags (body is {flags} or the flags object)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":{}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/admin/blog":{"get":{"summary":"Official blog posts (documents owned by @interlinedlist)","tags":["admin"],"security":[{"bearer":[]}],"description":"Requires an app role (moderator/admin).","responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/hooks/substratal":{"post":{"summary":"SubstratalApps webhook receiver (signed, de-duplicated, handled inline)","tags":["webhooks"],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/hooks/github":{"post":{"summary":"GitHub webhooks for GitHub-backed lists","tags":["webhooks"],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/hooks/ses":{"post":{"summary":"SES bounce/complaint notifications via SNS","tags":["webhooks"],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations":{"get":{"summary":"Connected accounts with health","tags":["integrations"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations/{id}/verify":{"post":{"summary":"Re-check an account (returns stored health; the worker refreshes on next use)","tags":["integrations"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations/{id}":{"patch":{"summary":"Set default / label","tags":["integrations"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"is_default":{"type":"boolean"},"label":{"type":["string","null"],"maxLength":80}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}},"delete":{"summary":"Disconnect (tokens are destroyed)","tags":["integrations"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations/linkedin/targets":{"get":{"summary":"LinkedIn targets (profile and company pages)","tags":["integrations"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations/linkedin/defaults":{"put":{"summary":"Default LinkedIn targets","tags":["integrations"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target_ids":{"type":"array","items":{"type":"string"},"maxItems":20}},"required":["target_ids"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations/github/repos":{"get":{"summary":"My GitHub repositories (for GitHub-backed lists)","tags":["integrations"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations/github/repos/{o}/{r}/labels":{"get":{"summary":"Repository labels","tags":["integrations"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"o","in":"path"},{"schema":{"type":"string"},"required":true,"name":"r","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/integrations/github/repos/{o}/{r}/assignees":{"get":{"summary":"Repository assignees","tags":["integrations"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"o","in":"path"},{"schema":{"type":"string"},"required":true,"name":"r","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/signup":{"post":{"summary":"Sign up (SubstratalApps); returns verification_sent and, when subscribed, device tokens","tags":["auth"],"security":[{},{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":12,"maxLength":128},"display_name":{"type":"string","minLength":1,"maxLength":100},"client_kind":{"type":"string","enum":["ios","macos","android","cli","desktop","web"],"default":"cli"}},"required":["email","password","display_name"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/login":{"post":{"summary":"Sign in → device tokens, or an MFA challenge","tags":["auth"],"security":[{},{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":1,"maxLength":128},"client_kind":{"type":"string","enum":["ios","macos","android","cli","desktop","web"],"default":"cli"},"device_label":{"type":"string","maxLength":80}},"required":["email","password"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/mfa/verify":{"post":{"summary":"Complete MFA","tags":["auth"],"security":[{},{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"mfa_ticket":{"type":"string"},"code":{"type":"string"},"recovery_code":{"type":"string"},"client_kind":{"type":"string","enum":["ios","macos","android","cli","desktop","web"],"default":"cli"}},"required":["mfa_ticket"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/refresh":{"post":{"summary":"Rotate an IL device token pair","tags":["auth"],"security":[{},{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"refresh_token":{"type":"string"}},"required":["refresh_token"]}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/logout":{"post":{"summary":"Revoke this device token (or all of mine)","tags":["auth"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"all_sessions":{"type":"boolean","default":false}}}}}},"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/access":{"get":{"summary":"Access status for the current token","tags":["auth"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/password/forgot":{"post":{"summary":"Password reset email (always 202) (proxied)","tags":["auth"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/password/reset":{"post":{"summary":"Reset the password with the emailed token (proxied)","tags":["auth"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/email/verify":{"post":{"summary":"Verify the email address (proxied)","tags":["auth"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/email/verify/resend":{"post":{"summary":"Resend the verification email (proxied)","tags":["auth"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/reauthenticate":{"post":{"summary":"Step-up re-authentication (proxied)","tags":["auth"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/auth/invitations/accept":{"post":{"summary":"Accept a SubstratalApps organization invitation (proxied)","tags":["auth"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/subscribe/prices":{"get":{"summary":"SubstratalApps Standard prices (live)","tags":["subscribe"],"security":[{},{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/subscribe/checkout":{"post":{"summary":"Start checkout (platform session; Idempotency-Key required)","tags":["subscribe"],"security":[{"bearer":[]}],"parameters":[{"schema":{"type":"string","minLength":1,"maxLength":255},"required":true,"name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/subscribe/confirm":{"post":{"summary":"Confirm checkout and mint access","tags":["subscribe"],"security":[{"bearer":[]}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/blog":{"get":{"summary":"The official blog: published posts flagged official (public, regardless of owner claim status)","tags":["documents"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"official","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":false,"name":"tag","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":100},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}},"/v1/blog/{slug}":{"get":{"summary":"One official blog post by blog slug (legacy /blog/{slug} URLs)","tags":["documents"],"security":[{},{"bearer":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"OK"},"default":{"description":"Error envelope","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{"type":"object","additionalProperties":{}}},"required":["code","message"]}},"required":["error"]}}}}}}}},"webhooks":{}}