{"openapi":"3.1.0","info":{"title":"Sleevy API","version":"1.0.0","description":"REST API for saving, listing, and managing your read-later queue."},"paths":{"/health":{"get":{"tags":["health"],"operationId":"health.check","parameters":[],"security":[],"responses":{"200":{"description":"HealthResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/health":{"get":{"tags":["health"],"operationId":"health.checkV1","parameters":[],"security":[],"responses":{"200":{"description":"HealthResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/captures":{"post":{"tags":["captures"],"operationId":"captures.capture","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"CaptureUpdated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureUpdated"}}}},"201":{"description":"CaptureCreated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureCreated"}}}},"400":{"description":"InvalidUrlError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidUrlError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"FolderNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNotFoundError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CapturePayload"}}},"required":true}}},"/v1/saved-items":{"get":{"tags":["saved-items"],"operationId":"saved-items.list","parameters":[{"name":"sort","in":"query","schema":{"anyOf":[{"type":"string","enum":["newest","oldest","title","unread"]},{"type":"null"}]},"required":false},{"name":"folder","in":"query","schema":{"anyOf":[{"type":"string"},{"type":"null"}]},"required":false}],"security":[{"bearer":[]}],"responses":{"200":{"description":"SavedItemsResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemsResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"FolderNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNotFoundError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}}}},"/v1/saved-items/{id}/open":{"post":{"tags":["saved-items"],"operationId":"saved-items.markOpened","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"SavedItemDto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"SavedItemNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemNotFoundError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}}}},"/v1/saved-items/{id}/read":{"post":{"tags":["saved-items"],"operationId":"saved-items.markRead","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"SavedItemDto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"SavedItemNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemNotFoundError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}}}},"/v1/saved-items/{id}/unread":{"post":{"tags":["saved-items"],"operationId":"saved-items.markUnread","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"SavedItemDto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"SavedItemNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemNotFoundError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}}}},"/v1/saved-items/{id}/read-state":{"post":{"tags":["saved-items"],"operationId":"saved-items.setReadState","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"SavedItemDto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"SavedItemNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemNotFoundError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemReadStatePayload"}}},"required":true}}},"/v1/saved-items/{id}/folder":{"put":{"tags":["saved-items"],"operationId":"saved-items.setFolder","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"SavedItemDto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedItemDto"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"SavedItemNotFoundError | FolderNotFoundError","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SavedItemNotFoundError"},{"$ref":"#/components/schemas/FolderNotFoundError"}]}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderAssignmentPayload"}}},"required":true}}},"/v1/saved-items/{id}":{"delete":{"tags":["saved-items"],"operationId":"saved-items.remove","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"204":{"description":"<No Content>"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}}}},"/v1/folders":{"get":{"tags":["folders"],"operationId":"folders.list","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"FoldersResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FoldersResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}}},"post":{"tags":["folders"],"operationId":"folders.create","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"FolderDto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderDto"}}}},"400":{"description":"InvalidFolderNameError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidFolderNameError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"409":{"description":"FolderNameConflictError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNameConflictError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNamePayload"}}},"required":true}}},"/v1/folders/{id}":{"patch":{"tags":["folders"],"operationId":"folders.rename","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"200":{"description":"FolderDto","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderDto"}}}},"400":{"description":"InvalidFolderNameError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidFolderNameError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"FolderNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNotFoundError"}}}},"409":{"description":"FolderNameConflictError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNameConflictError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNamePayload"}}},"required":true}},"delete":{"tags":["folders"],"operationId":"folders.remove","parameters":[{"name":"id","in":"path","schema":{"type":"string"},"required":true}],"security":[{"bearer":[]}],"responses":{"204":{"description":"<No Content>"},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"404":{"description":"FolderNotFoundError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderNotFoundError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}}}},"/connect/authorize":{"post":{"tags":["connect-authorize"],"operationId":"connect-authorize.authorize","parameters":[],"security":[{"bearer":[]}],"responses":{"200":{"description":"ConnectAuthorizeResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectAuthorizeResponse"}}}},"400":{"description":"ConnectError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Unauthorized"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectAuthorizePayload"}}},"required":true}}},"/connect/exchange":{"post":{"tags":["connect-exchange"],"operationId":"connect-exchange.exchange","parameters":[],"security":[],"responses":{"200":{"description":"ConnectExchangeResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectExchangeResponse"}}}},"400":{"description":"ConnectError","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectError"}}}},"429":{"description":"RateLimitExceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceeded"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectExchangePayload"}}},"required":true}}}},"components":{"schemas":{"HealthResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"],"additionalProperties":false},"CapturePayload":{"type":"object","properties":{"url":{"type":"string"},"sourceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"captureChannel":{"anyOf":[{"type":"string","enum":["chrome-extension","ios-app","ios-share-extension","raycast","web-companion","api"]},{"type":"null"}]},"tags":{"anyOf":[{"type":"array","items":{"type":"string","enum":["ai","tools","typescript","security","design","backend","front-end"]}},{"type":"null"}]},"folderId":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"type":"null"}]}},"required":["url"],"additionalProperties":false},"FolderDto":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"SavedItemDto":{"type":"object","properties":{"id":{"type":"string"},"originalUrl":{"type":"string"},"normalizedUrl":{"type":"string"},"host":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"siteName":{"anyOf":[{"type":"string"},{"type":"null"}]},"faviconUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"faviconLightUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"faviconDarkUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"canonicalUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"previewSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":{"type":"string","enum":["article","video","website","repository"]},"tags":{"type":"array","items":{"type":"string","enum":["ai","tools","typescript","security","design","backend","front-end"]}},"enrichmentStatus":{"type":"string","enum":["pending","enriched","failed"]},"sourceName":{"anyOf":[{"type":"string"},{"type":"null"}]},"captureChannel":{"anyOf":[{"type":"string","enum":["chrome-extension","ios-app","ios-share-extension","raycast","web-companion","api"]},{"type":"null"}]},"folder":{"anyOf":[{"$ref":"#/components/schemas/FolderDto"},{"type":"null"}]},"isRead":{"type":"boolean"},"lastSavedAt":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","originalUrl","normalizedUrl","host","type","tags","enrichmentStatus","folder","isRead","lastSavedAt","createdAt","updatedAt"],"additionalProperties":false},"CaptureCreated":{"type":"object","properties":{"savedItem":{"$ref":"#/components/schemas/SavedItemDto"},"captureResult":{"type":"string","enum":["created"]}},"required":["savedItem","captureResult"],"additionalProperties":false},"CaptureUpdated":{"type":"object","properties":{"savedItem":{"$ref":"#/components/schemas/SavedItemDto"},"captureResult":{"type":"string","enum":["updated"]}},"required":["savedItem","captureResult"],"additionalProperties":false},"InvalidUrlError":{"type":"object","properties":{"_tag":{"type":"string","enum":["InvalidUrlError"]},"message":{"type":"string"},"url":{"type":"string"}},"required":["_tag","message","url"],"additionalProperties":false},"FolderNotFoundError":{"type":"object","properties":{"_tag":{"type":"string","enum":["FolderNotFoundError"]},"message":{"type":"string"},"folderId":{"type":"string"}},"required":["_tag","message","folderId"],"additionalProperties":false},"RateLimitExceeded":{"type":"object","properties":{"_tag":{"type":"string","enum":["RateLimitExceeded"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"Unauthorized":{"type":"object","properties":{"_tag":{"type":"string","enum":["Unauthorized"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"SavedItemsResponse":{"type":"object","properties":{"savedItems":{"type":"array","items":{"$ref":"#/components/schemas/SavedItemDto"}}},"required":["savedItems"],"additionalProperties":false},"SavedItemNotFoundError":{"type":"object","properties":{"_tag":{"type":"string","enum":["SavedItemNotFoundError"]},"message":{"type":"string"},"savedItemId":{"type":"string"}},"required":["_tag","message","savedItemId"],"additionalProperties":false},"SavedItemReadStatePayload":{"type":"object","properties":{"isRead":{"type":"boolean"}},"required":["isRead"],"additionalProperties":false},"FolderAssignmentPayload":{"type":"object","properties":{"folderId":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["folderId"],"additionalProperties":false},"FoldersResponse":{"type":"object","properties":{"folders":{"type":"array","items":{"$ref":"#/components/schemas/FolderDto"}}},"required":["folders"],"additionalProperties":false},"FolderNamePayload":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false},"InvalidFolderNameError":{"type":"object","properties":{"_tag":{"type":"string","enum":["InvalidFolderNameError"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"FolderNameConflictError":{"type":"object","properties":{"_tag":{"type":"string","enum":["FolderNameConflictError"]},"message":{"type":"string"}},"required":["_tag","message"],"additionalProperties":false},"ConnectAuthorizePayload":{"type":"object","properties":{"client":{"type":"string","enum":["chrome-extension","raycast"]},"redirectUri":{"type":"string"},"codeChallenge":{"type":"string"},"codeChallengeMethod":{"type":"string","enum":["S256"]},"scopes":{"type":"array","items":{"type":"string","enum":["saved-items:capture","saved-items:read","saved-items:write","saved-items:delete","folders:read","folders:write","folders:delete","account:read"]}},"label":{"type":"string"},"deviceHint":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["client","redirectUri","codeChallenge","codeChallengeMethod","scopes","label"],"additionalProperties":false},"ConnectAuthorizeResponse":{"type":"object","properties":{"code":{"type":"string"}},"required":["code"],"additionalProperties":false},"ConnectError":{"type":"object","properties":{"_tag":{"type":"string","enum":["ConnectError"]},"code":{"type":"string","enum":["unknown_client","invalid_redirect_uri","invalid_scope","invalid_code","invalid_verifier","client_mismatch"]},"message":{"type":"string"}},"required":["_tag","code","message"],"additionalProperties":false},"ConnectExchangePayload":{"type":"object","properties":{"client":{"type":"string","enum":["chrome-extension","raycast"]},"code":{"type":"string"},"codeVerifier":{"type":"string"}},"required":["client","code","codeVerifier"],"additionalProperties":false},"ConnectExchangeResponse":{"type":"object","properties":{"apiKey":{"type":"string"},"scopes":{"type":"array","items":{"type":"string","enum":["saved-items:capture","saved-items:read","saved-items:write","saved-items:delete","folders:read","folders:write","folders:delete","account:read"]}},"label":{"type":"string"}},"required":["apiKey","scopes","label"],"additionalProperties":false}},"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"security":[],"tags":[{"name":"health"},{"name":"captures"},{"name":"saved-items"},{"name":"folders"},{"name":"connect-authorize"},{"name":"connect-exchange"}],"servers":[{"url":"https://api.sleevy.app","description":"Sleevy production API"}]}