{"openapi":"3.1.0","info":{"title":"Oddlynew Content and Documents API","version":"1.0.0-foundation","description":"Server-side Content and structured Documents API. Published Content list and detail answer from immutable publication revisions, 60 seconds fresh and up to 15 seconds stale while revalidating, with a composite detail ETag. Preview answers from the current serialized editor state and is uncached; search remains provisional. Content-bearing document detail reads use the uncached database path. Document catalog listings may use an authenticated response cache with a 60-second maximum age."},"paths":{"/v1/orgs/{orgId}/documents":{"get":{"tags":["Documents"],"operationId":"Documents.listDocuments","parameters":[{"name":"orgId","in":"path","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true},{"name":"typeId","in":"query","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true},{"name":"cursor","in":"query","schema":{"type":"string"},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50},"required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"ListDocumentsApiResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDocumentsApiResponse"}}}},"400":{"description":"DocumentApiInvalidCursor | InvalidRequest","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DocumentApiInvalidCursor"},{"$ref":"#/components/schemas/InvalidRequest"}]}}}},"401":{"description":"AuthenticationRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationRequired"}}}},"403":{"description":"InsufficientScope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsufficientScope"}}}},"429":{"description":"RateLimited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimited"}}}},"503":{"description":"DocumentApiServiceUnavailable | ServiceUnavailable","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DocumentApiServiceUnavailable"},{"$ref":"#/components/schemas/ServiceUnavailable"}]}}}}},"description":"Lists persisted documents of one type with their typed metadata and cursor pagination. Deployments may serve these persisted reads from a query cache.","summary":"List typed documents"}},"/v1/orgs/{orgId}/documents/{id}":{"get":{"tags":["Documents"],"operationId":"Documents.getDocument","parameters":[{"name":"orgId","in":"path","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true},{"name":"id","in":"path","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"GetDocumentApiResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDocumentApiResponse"}}}},"400":{"description":"InvalidRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequest"}}}},"401":{"description":"AuthenticationRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationRequired"}}}},"403":{"description":"InsufficientScope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsufficientScope"}}}},"404":{"description":"DocumentApiNotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DocumentApiNotFound"}}}},"429":{"description":"RateLimited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimited"}}}},"503":{"description":"DocumentApiServiceUnavailable | ServiceUnavailable","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/DocumentApiServiceUnavailable"},{"$ref":"#/components/schemas/ServiceUnavailable"}]}}}}},"description":"Returns typed metadata and content blocks from the authoritative persisted head. This endpoint does not read live collaborative state and is not served from a query cache.","summary":"Read a typed document"}},"/v1/orgs/{orgId}/content":{"get":{"tags":["Content"],"operationId":"Content.listContent","parameters":[{"name":"orgId","in":"path","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true},{"name":"typeId","in":"query","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":false},{"name":"cursor","in":"query","schema":{"type":"string"},"required":false},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50},"required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"ListPublishedContentApiResponse","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPublishedContentApiResponse"}}}},"400":{"description":"ContentApiInvalidCursor | InvalidRequest","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ContentApiInvalidCursor"},{"$ref":"#/components/schemas/InvalidRequest"}]}}}},"401":{"description":"AuthenticationRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationRequired"}}}},"403":{"description":"InsufficientScope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsufficientScope"}}}},"429":{"description":"RateLimited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimited"}}}},"503":{"description":"ContentApiServiceUnavailable | ServiceUnavailable","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ContentApiServiceUnavailable"},{"$ref":"#/components/schemas/ServiceUnavailable"}]}}}}},"description":"Items answer from each post's pinned publication revision. `typeId` narrows the page to posts of one document type. Items are ordered by last publish (`lastPublishedAt` desc, then id desc) and paged with an opaque cursor; the walk is not a snapshot, so a rebuild walks every page rather than syncing incrementally. Slug values are leading-slash site paths and must be percent-encoded into the detail path segment: `/recipes/paella` is read as `/v1/orgs/{orgId}/content/%2Frecipes%2Fpaella`.","summary":"List published content"}},"/v1/orgs/{orgId}/content/search":{"get":{"tags":["Content"],"operationId":"Content.searchContent","parameters":[{"name":"orgId","in":"path","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true},{"name":"q","in":"query","schema":{"type":"string"},"required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"PROVISIONAL: this response is intentionally unfrozen. Published Content fields will be defined only after the publication-revision schema is ratified.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvisionalContentApiResponse"}}}},"400":{"description":"InvalidRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequest"}}}},"401":{"description":"AuthenticationRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationRequired"}}}},"403":{"description":"InsufficientScope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsufficientScope"}}}},"429":{"description":"RateLimited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimited"}}}},"503":{"description":"ProvisionalContentServiceUnavailable | ServiceUnavailable","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ProvisionalContentServiceUnavailable"},{"$ref":"#/components/schemas/ServiceUnavailable"}]}}}}},"description":"PROVISIONAL: this response is intentionally unfrozen. Published Content fields will be defined only after the publication-revision schema is ratified.","summary":"Search published content (provisional contract)","x-oddlynew-contract-status":"provisional"}},"/v1/orgs/{orgId}/content/{slug}":{"get":{"tags":["Content"],"operationId":"Content.getContent","parameters":[{"name":"orgId","in":"path","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true},{"name":"slug","in":"path","schema":{"type":"string","allOf":[{"minLength":1}]},"required":true}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"One immutable publication revision plus live-resolved authors and media. The ETag is composite (revision id plus a hash of the served body), so publish, author rename, account deletion, asset URL rotation, and live post-field changes all invalidate caches.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPublishedContentApiResponse"}}}},"304":{"description":"The representation matches the presented entity tag; the body is omitted."},"400":{"description":"InvalidRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequest"}}}},"401":{"description":"AuthenticationRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationRequired"}}}},"403":{"description":"InsufficientScope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InsufficientScope"}}}},"404":{"description":"ContentApiNotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentApiNotFound"}}}},"429":{"description":"RateLimited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimited"}}}},"503":{"description":"ContentApiServiceUnavailable | ServiceUnavailable","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ContentApiServiceUnavailable"},{"$ref":"#/components/schemas/ServiceUnavailable"}]}}}}},"description":"Answers from the post's pinned publication revision with a strong composite ETag (revision id plus a hash of the served body, so live-resolved parts such as author display data and asset URLs revalidate correctly). Cache the document data, never the asset capability URLs. Slugs are stored as leading-slash site paths, so the slug must be percent-encoded into the single path segment: `/recipes/paella` is read as `/v1/orgs/{orgId}/content/%2Frecipes%2Fpaella`.","summary":"Read published content"}},"/v1/orgs/{orgId}/content/{slug}/preview":{"get":{"tags":["Content"],"operationId":"Content.previewContent","parameters":[{"name":"orgId","in":"path","schema":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"required":true},{"name":"slug","in":"path","schema":{"type":"string","allOf":[{"minLength":1}]},"required":true},{"name":"x-oddlynew-preview-grant","in":"header","schema":{"anyOf":[{"type":"string","description":"Preview grant verified and stripped by the gateway before routing."},{"type":"null"}]},"required":false}],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The current editor state with live publishing inputs and a deterministic review id. Preview responses are never cacheable and carry no ETag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetContentPreviewApiResponse"}}}},"400":{"description":"InvalidRequest","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequest"}}}},"401":{"description":"AuthenticationRequired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationRequired"}}}},"403":{"description":"ContentApiPreviewGrantRejected | InsufficientScope","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ContentApiPreviewGrantRejected"},{"$ref":"#/components/schemas/InsufficientScope"}]}}}},"404":{"description":"ContentApiNotFound","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentApiNotFound"}}}},"429":{"description":"RateLimited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimited"}}}},"503":{"description":"ContentApiServiceUnavailable | ServiceUnavailable","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ContentApiServiceUnavailable"},{"$ref":"#/components/schemas/ServiceUnavailable"}]}}}}},"description":"Reads the current serialized editor state without retaining an artifact. The caller must hold org:content:preview. An optional X-Oddlynew-Preview-Grant is verified after bearer authorization. Responses are no-store and have no ETag.","summary":"Preview working content"}}},"components":{"schemas":{"DocumentApiMetadata":{"anyOf":[{"type":"object"},{"type":"null"}],"description":"Typed document parameters. Interpret fields using the document type identified by typeId."},"DocumentApiListItem":{"type":"object","properties":{"documentId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"title":{"type":"string"},"typeId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"typeName":{"type":"string"},"typeTags":{"type":"array","items":{"type":"string"}},"typeFamily":{"type":"string"},"creatorId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"organizationId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"charCount":{"type":"number"},"blockCount":{"type":"number"},"currentVersion":{"type":"number"},"versionCount":{"type":"number"},"createdAt":{"type":"string","description":"ISO 8601 date-time.","format":"date-time"},"updatedAt":{"type":"string","description":"ISO 8601 date-time.","format":"date-time"},"metadata":{"$ref":"#/components/schemas/DocumentApiMetadata"}},"required":["documentId","title","typeId","typeName","typeTags","typeFamily","creatorId","organizationId","charCount","blockCount","currentVersion","versionCount","createdAt","updatedAt","metadata"],"additionalProperties":false},"ListDocumentsApiResponse":{"type":"object","properties":{"documents":{"type":"array","items":{"$ref":"#/components/schemas/DocumentApiListItem"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["documents","nextCursor","hasMore"],"additionalProperties":false},"DocumentApiInvalidCursor":{"type":"object","properties":{"_tag":{"type":"string","enum":["DocumentApiInvalidCursor"]},"error":{"type":"string","enum":["invalid_cursor"]}},"required":["_tag","error"],"additionalProperties":false},"InvalidRequest":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_request"]},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false},"DocumentApiServiceUnavailable":{"type":"object","properties":{"_tag":{"type":"string","enum":["DocumentApiServiceUnavailable"]},"error":{"type":"string","enum":["service_unavailable"]}},"required":["_tag","error"],"additionalProperties":false},"ServiceUnavailable":{"type":"object","properties":{"error":{"type":"string","enum":["service_unavailable"]}},"required":["error"],"additionalProperties":false},"AuthenticationRequired":{"type":"object","properties":{"error":{"type":"string","enum":["invalid_token"]},"message":{"type":"string"}},"required":["error","message"],"additionalProperties":false},"InsufficientScope":{"type":"object","properties":{"error":{"type":"string","enum":["insufficient_scope"]}},"required":["error"],"additionalProperties":false},"RateLimited":{"type":"object","properties":{"error":{"type":"string","enum":["rate_limited"]}},"required":["error"],"additionalProperties":false},"DocumentApiBlock":{"type":"object","properties":{"_type":{"type":"string"},"_key":{"type":"string"}},"required":["_type","_key"],"description":"A typed persisted content block. Additional JSON fields are defined by the document type."},"GetDocumentApiResponse":{"type":"object","properties":{"documentId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"title":{"type":"string"},"typeId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"creatorId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"organizationId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"charCount":{"type":"number"},"blockCount":{"type":"number"},"currentVersion":{"type":"number"},"versionCount":{"type":"number"},"createdAt":{"type":"string","description":"ISO 8601 date-time.","format":"date-time"},"updatedAt":{"type":"string","description":"ISO 8601 date-time.","format":"date-time"},"metadata":{"$ref":"#/components/schemas/DocumentApiMetadata"},"content":{"type":"array","items":{"$ref":"#/components/schemas/DocumentApiBlock"}}},"required":["documentId","title","typeId","creatorId","organizationId","charCount","blockCount","currentVersion","versionCount","createdAt","updatedAt","metadata","content"],"additionalProperties":false},"DocumentApiNotFound":{"type":"object","properties":{"_tag":{"type":"string","enum":["DocumentApiNotFound"]},"error":{"type":"string","enum":["not_found"]}},"required":["_tag","error"],"additionalProperties":false},"NullableString":{"anyOf":[{"type":"string"},{"type":"null"}]},"PublishedContentFeatureImage":{"anyOf":[{"type":"object","properties":{"ref":{"type":"string"},"alt":{"$ref":"#/components/schemas/NullableString"},"caption":{"$ref":"#/components/schemas/NullableString"}},"required":["ref","alt","caption"],"additionalProperties":false},{"type":"null"}]},"PublishedContentTag":{"type":"object","properties":{"id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"],"additionalProperties":false,"description":"Tag values frozen at publish; a later rename waits for the next republish."},"NullableIsoDateTime":{"anyOf":[{"type":"string","description":"ISO 8601 date-time.","format":"date-time"},{"type":"null"}]},"PublishedContentListItem":{"type":"object","properties":{"id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"slug":{"type":"string"},"title":{"type":"string"},"typeId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"excerpt":{"$ref":"#/components/schemas/NullableString"},"featureImage":{"$ref":"#/components/schemas/PublishedContentFeatureImage"},"featured":{"type":"boolean"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentTag"}},"metadata":{"$ref":"#/components/schemas/DocumentApiMetadata"},"firstPubliclyPublishedAt":{"$ref":"#/components/schemas/NullableIsoDateTime"},"lastPublishedAt":{"type":"string","description":"ISO 8601 date-time.","format":"date-time"}},"required":["id","slug","title","typeId","excerpt","featureImage","featured","tags","metadata","firstPubliclyPublishedAt","lastPublishedAt"],"additionalProperties":false},"PublishedContentAssets":{"type":"object","additionalProperties":{"type":"object","properties":{"url":{"type":"string"},"width":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Intrinsic pixel width. Currently always null: the files domain does not yet capture image dimensions."},"height":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Intrinsic pixel height. Currently always null: the files domain does not yet capture image dimensions."},"mimeType":{"type":"string"}},"required":["url","width","height","mimeType"],"additionalProperties":false}},"ListPublishedContentApiResponse":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentListItem"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"},"assets":{"$ref":"#/components/schemas/PublishedContentAssets"}},"required":["items","nextCursor","hasMore","assets"],"additionalProperties":false},"ContentApiInvalidCursor":{"type":"object","properties":{"_tag":{"type":"string","enum":["ContentApiInvalidCursor"]},"error":{"type":"string","enum":["invalid_cursor"]}},"required":["_tag","error"],"additionalProperties":false},"ContentApiServiceUnavailable":{"type":"object","properties":{"_tag":{"type":"string","enum":["ContentApiServiceUnavailable"]},"error":{"type":"string","enum":["service_unavailable"]}},"required":["_tag","error"],"additionalProperties":false},"ProvisionalContentApiResponse":{"description":"PROVISIONAL: this response is intentionally unfrozen. Published Content fields will be defined only after the publication-revision schema is ratified."},"ProvisionalContentServiceUnavailable":{"type":"object","properties":{"error":{"type":"string","enum":["service_unavailable"]}},"required":["error"],"additionalProperties":false},"PublishedContentPost":{"type":"object","properties":{"id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"slug":{"type":"string"},"typeId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"locale":{"$ref":"#/components/schemas/NullableString"},"visibility":{"type":"string","enum":["public","unlisted"]},"featured":{"type":"boolean"},"firstPublishedAt":{"$ref":"#/components/schemas/NullableIsoDateTime"},"firstPubliclyPublishedAt":{"$ref":"#/components/schemas/NullableIsoDateTime"},"lastPublishedAt":{"$ref":"#/components/schemas/NullableIsoDateTime"}},"required":["id","slug","typeId","locale","visibility","featured","firstPublishedAt","firstPubliclyPublishedAt","lastPublishedAt"],"additionalProperties":false},"PublishedContentVersion":{"type":"object","properties":{"id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"number":{"anyOf":[{"type":"number"},{"type":"null"}]},"title":{"type":"string"},"metadata":{"$ref":"#/components/schemas/DocumentApiMetadata"},"content":{"type":"array","items":{"$ref":"#/components/schemas/DocumentApiBlock"}},"settings":{"anyOf":[{"type":"object"},{"type":"null"}]},"checksum":{"type":"string"}},"required":["id","number","title","metadata","content","settings","checksum"],"additionalProperties":false,"description":"The published document body pinned by the revision, in the documents API dialect."},"PublishedContentMeta":{"type":"object","properties":{"title":{"$ref":"#/components/schemas/NullableString"},"description":{"$ref":"#/components/schemas/NullableString"},"canonicalUrl":{"$ref":"#/components/schemas/NullableString"},"excerpt":{"$ref":"#/components/schemas/NullableString"},"featureImage":{"$ref":"#/components/schemas/PublishedContentFeatureImage"},"ogTitle":{"$ref":"#/components/schemas/NullableString"},"ogDescription":{"$ref":"#/components/schemas/NullableString"},"ogImage":{"$ref":"#/components/schemas/NullableString"},"twitterTitle":{"$ref":"#/components/schemas/NullableString"},"twitterDescription":{"$ref":"#/components/schemas/NullableString"},"twitterImage":{"$ref":"#/components/schemas/NullableString"}},"required":["title","description","canonicalUrl","excerpt","featureImage","ogTitle","ogDescription","ogImage","twitterTitle","twitterDescription","twitterImage"],"additionalProperties":false},"PublishedContentAuthor":{"type":"object","properties":{"id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"name":{"$ref":"#/components/schemas/NullableString"},"avatarUrl":{"$ref":"#/components/schemas/NullableString"}},"required":["id","name","avatarUrl"],"additionalProperties":false,"description":"Resolved live at read time: a rename shows the new name on old publications, and a deleted account disappears from every revision. avatarUrl is a plain URL, not an asset reference."},"GetPublishedContentApiResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["published"]},"revisionId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"post":{"$ref":"#/components/schemas/PublishedContentPost"},"version":{"$ref":"#/components/schemas/PublishedContentVersion"},"meta":{"$ref":"#/components/schemas/PublishedContentMeta"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentTag"}},"authors":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentAuthor"}},"assets":{"$ref":"#/components/schemas/PublishedContentAssets"}},"required":["mode","revisionId","post","version","meta","tags","authors","assets"],"additionalProperties":false,"description":"One immutable publication revision plus live-resolved authors and media. The ETag is composite (revision id plus a hash of the served body), so publish, author rename, account deletion, asset URL rotation, and live post-field changes all invalidate caches."},"ContentApiNotFound":{"type":"object","properties":{"_tag":{"type":"string","enum":["ContentApiNotFound"]},"error":{"type":"string","enum":["not_found"]}},"required":["_tag","error"],"additionalProperties":false},"PreviewContentPost":{"type":"object","properties":{"id":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"slug":{"type":"string"},"typeId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"locale":{"$ref":"#/components/schemas/NullableString"},"visibility":{"type":"string","enum":["public","unlisted","restricted"]},"requiredRoles":{"type":"array","items":{"type":"string"}},"featured":{"type":"boolean"},"publicationState":{"type":"string","enum":["draft","published","scheduled"]},"publishedRevisionId":{"anyOf":[{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},{"type":"null"}]},"firstPublishedAt":{"$ref":"#/components/schemas/NullableIsoDateTime"},"firstPubliclyPublishedAt":{"$ref":"#/components/schemas/NullableIsoDateTime"},"lastPublishedAt":{"$ref":"#/components/schemas/NullableIsoDateTime"}},"required":["id","slug","typeId","locale","visibility","requiredRoles","featured","publicationState","publishedRevisionId","firstPublishedAt","firstPubliclyPublishedAt","lastPublishedAt"],"additionalProperties":false},"PreviewContentVersion":{"type":"object","properties":{"id":{"anyOf":[{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},{"type":"null"}]},"number":{"type":"null"},"title":{"type":"string"},"metadata":{"$ref":"#/components/schemas/DocumentApiMetadata"},"content":{"type":"array","items":{"$ref":"#/components/schemas/DocumentApiBlock"}},"settings":{"anyOf":[{"type":"object"},{"type":"null"}]},"checksum":{"type":"string","allOf":[{"pattern":"^[0-9a-f]{64}$"}]}},"required":["id","number","title","metadata","content","settings","checksum"],"additionalProperties":false,"description":"The current serialized editor state. It is read-only and creates no preview artifact."},"PreviewContentReviewInputs":{"type":"object","properties":{"title":{"type":"string"},"typeId":{"type":"string","allOf":[{"pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|[fF]{8}-[fF]{4}-[fF]{4}-[fF]{4}-[fF]{12})$","format":"uuid"}]},"path":{"type":"string"},"visibility":{"type":"string","enum":["public","unlisted","restricted"]},"requiredRoles":{"type":"array","items":{"type":"string"}},"featured":{"type":"boolean"},"locale":{"$ref":"#/components/schemas/NullableString"},"meta":{"$ref":"#/components/schemas/PublishedContentMeta"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentTag"}},"authors":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentAuthor"}}},"required":["title","typeId","path","visibility","requiredRoles","featured","locale","meta","tags","authors"],"additionalProperties":false,"description":"Reviewer-readable non-body inputs included in the review id."},"PreviewContentReview":{"type":"object","properties":{"reviewId":{"type":"string","allOf":[{"pattern":"^[0-9a-f]{16}$"}]},"checksum":{"type":"string","allOf":[{"pattern":"^[0-9a-f]{64}$"}]},"liveRevision":{"type":"integer","allOf":[{"minimum":0}]},"capturedAt":{"type":"string","description":"ISO 8601 date-time.","format":"date-time"},"grant":{"type":"string","enum":["verified","absent"]},"reviewInputs":{"$ref":"#/components/schemas/PreviewContentReviewInputs"}},"required":["reviewId","checksum","liveRevision","capturedAt","grant","reviewInputs"],"additionalProperties":false},"GetContentPreviewApiResponse":{"type":"object","properties":{"mode":{"type":"string","enum":["preview"]},"revisionId":{"type":"null"},"post":{"$ref":"#/components/schemas/PreviewContentPost"},"version":{"$ref":"#/components/schemas/PreviewContentVersion"},"meta":{"$ref":"#/components/schemas/PublishedContentMeta"},"tags":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentTag"}},"authors":{"type":"array","items":{"$ref":"#/components/schemas/PublishedContentAuthor"}},"assets":{"$ref":"#/components/schemas/PublishedContentAssets"},"preview":{"$ref":"#/components/schemas/PreviewContentReview"}},"required":["mode","revisionId","post","version","meta","tags","authors","assets","preview"],"additionalProperties":false,"description":"The current editor state with live publishing inputs and a deterministic review id. Preview responses are never cacheable and carry no ETag."},"ContentApiPreviewGrantRejected":{"type":"object","properties":{"_tag":{"type":"string","enum":["ContentApiPreviewGrantRejected"]},"error":{"type":"string","enum":["preview_grant_rejected"]},"reason":{"type":"string","enum":["expired","invalid","scope"]}},"required":["_tag","error","reason"],"additionalProperties":false}},"securitySchemes":{"bearerAuth":{"description":"Oddlynew user-bound principal API key.","type":"http","scheme":"Bearer"}}},"security":[],"tags":[{"name":"Documents","description":"Stable structured-document reads for custom server-side front ends. Catalog listings may be cached according to deployment policy; content-bearing detail reads are authoritative."},{"name":"Content","description":"Published Content API. List and detail answer from immutable publication revisions. Preview answers from the current serialized editor state. Search remains provisional until its own track lands."}]}