{"openapi":"3.1.2","info":{"title":"VineMaker Publishing catalog API","version":"1.0.0","description":"Read-only public application API: no login/API key. Development server retains a separate outer Apache Basic Authentication gate. Only designated approved/legacy-published article revisions and independently published relationships/assets are exposed. Default 25/max 100 records. 60 requests per 60 seconds per address including docs, HEAD/errors; 429 Retry-After. Private/no-store, noindex; no CORS. See guide for ordering, filters and curl examples."},"servers":[{"url":"https://vinemakerpublishing.com","description":"Production"}],"security":[],"externalDocs":{"url":"https://vinemakerpublishing.com/api","description":"Readable guide"},"paths":{"/api/v1":{"get":{"operationId":"getCatalogRoot","summary":"API version and discovery","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Root"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headCatalogRoot","summary":"Root headers only","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}}}}},"/api/v1/authors":{"get":{"operationId":"listAuthors","summary":"Published authors","parameters":[{"in":"query","name":"page","required":false,"description":"Offset page; zero results for pages beyond data.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"in":"query","name":"per_page","required":false,"description":"Page size, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"in":"query","name":"q","required":false,"description":"Literal substring: author name/bios, book title/subtitle/description, approved article title/subtitle/excerpt/byline.","schema":{"type":"string","maxLength":100}},{"in":"query","name":"slug","required":false,"description":"Exact public slug.","schema":{"type":"string","maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"in":"query","name":"sort","required":false,"description":"catalog uses published display order then ID (articles date-desc before ID); id/-id override.","schema":{"type":"string","enum":["catalog","id","-id"],"default":"catalog"}}],"responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorCollection"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headAuthors","summary":"Collection headers only","parameters":[{"in":"query","name":"page","required":false,"description":"Offset page; zero results for pages beyond data.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"in":"query","name":"per_page","required":false,"description":"Page size, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"in":"query","name":"q","required":false,"description":"Literal substring: author name/bios, book title/subtitle/description, approved article title/subtitle/excerpt/byline.","schema":{"type":"string","maxLength":100}},{"in":"query","name":"slug","required":false,"description":"Exact public slug.","schema":{"type":"string","maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"in":"query","name":"sort","required":false,"description":"catalog uses published display order then ID (articles date-desc before ID); id/-id override.","schema":{"type":"string","enum":["catalog","id","-id"],"default":"catalog"}}],"responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}}}}},"/api/v1/authors/{id}":{"parameters":[{"in":"path","name":"id","required":true,"description":"Stable catalog/article ID, never an account ID.","schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"}}],"get":{"operationId":"getAuthor","summary":"One public author","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorDetail"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headAuthor","summary":"Resource headers only","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}}}}},"/api/v1/books":{"get":{"operationId":"listBooks","summary":"Published books","parameters":[{"in":"query","name":"page","required":false,"description":"Offset page; zero results for pages beyond data.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"in":"query","name":"per_page","required":false,"description":"Page size, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"in":"query","name":"q","required":false,"description":"Literal substring: author name/bios, book title/subtitle/description, approved article title/subtitle/excerpt/byline.","schema":{"type":"string","maxLength":100}},{"in":"query","name":"slug","required":false,"description":"Exact public slug.","schema":{"type":"string","maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"in":"query","name":"sort","required":false,"description":"catalog uses published display order then ID (articles date-desc before ID); id/-id override.","schema":{"type":"string","enum":["catalog","id","-id"],"default":"catalog"}},{"in":"query","name":"author_id","required":false,"description":"Published book contributor or approved article byline/related-author catalog ID.","schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"}}],"responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookCollection"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headBooks","summary":"Collection headers only","parameters":[{"in":"query","name":"page","required":false,"description":"Offset page; zero results for pages beyond data.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"in":"query","name":"per_page","required":false,"description":"Page size, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"in":"query","name":"q","required":false,"description":"Literal substring: author name/bios, book title/subtitle/description, approved article title/subtitle/excerpt/byline.","schema":{"type":"string","maxLength":100}},{"in":"query","name":"slug","required":false,"description":"Exact public slug.","schema":{"type":"string","maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"in":"query","name":"sort","required":false,"description":"catalog uses published display order then ID (articles date-desc before ID); id/-id override.","schema":{"type":"string","enum":["catalog","id","-id"],"default":"catalog"}},{"in":"query","name":"author_id","required":false,"description":"Published book contributor or approved article byline/related-author catalog ID.","schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"}}],"responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}}}}},"/api/v1/books/{id}":{"parameters":[{"in":"path","name":"id","required":true,"description":"Stable catalog/article ID, never an account ID.","schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"}}],"get":{"operationId":"getBook","summary":"One public book","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BookDetail"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headBook","summary":"Resource headers only","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}}}}},"/api/v1/articles":{"get":{"operationId":"listArticles","summary":"Published articles","parameters":[{"in":"query","name":"page","required":false,"description":"Offset page; zero results for pages beyond data.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"in":"query","name":"per_page","required":false,"description":"Page size, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"in":"query","name":"q","required":false,"description":"Literal substring: author name/bios, book title/subtitle/description, approved article title/subtitle/excerpt/byline.","schema":{"type":"string","maxLength":100}},{"in":"query","name":"slug","required":false,"description":"Exact public slug.","schema":{"type":"string","maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"in":"query","name":"sort","required":false,"description":"catalog uses published display order then ID (articles date-desc before ID); id/-id override.","schema":{"type":"string","enum":["catalog","id","-id"],"default":"catalog"}},{"in":"query","name":"author_id","required":false,"description":"Published book contributor or approved article byline/related-author catalog ID.","schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"}}],"responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleCollection"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headArticles","summary":"Collection headers only","parameters":[{"in":"query","name":"page","required":false,"description":"Offset page; zero results for pages beyond data.","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}},{"in":"query","name":"per_page","required":false,"description":"Page size, 1–100.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"in":"query","name":"q","required":false,"description":"Literal substring: author name/bios, book title/subtitle/description, approved article title/subtitle/excerpt/byline.","schema":{"type":"string","maxLength":100}},{"in":"query","name":"slug","required":false,"description":"Exact public slug.","schema":{"type":"string","maxLength":160,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"in":"query","name":"sort","required":false,"description":"catalog uses published display order then ID (articles date-desc before ID); id/-id override.","schema":{"type":"string","enum":["catalog","id","-id"],"default":"catalog"}},{"in":"query","name":"author_id","required":false,"description":"Published book contributor or approved article byline/related-author catalog ID.","schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"}}],"responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}}}}},"/api/v1/articles/{id}":{"parameters":[{"in":"path","name":"id","required":true,"description":"Stable catalog/article ID, never an account ID.","schema":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"}}],"get":{"operationId":"getArticle","summary":"One public article","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArticleDetail"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headArticle","summary":"Resource headers only","responses":{"200":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query parameters","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"404":{"description":"Nonexistent or nonpublic resource","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}},"405":{"description":"Read-only endpoint","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Allow":{"schema":{"type":"string","const":"GET, HEAD"}}}},"429":{"description":"API address quota exceeded","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}},"Retry-After":{"schema":{"type":"integer","minimum":1},"description":"Seconds until fixed window resets."}}},"503":{"description":"Temporary API failure","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}}}}}},"/api":{"get":{"operationId":"apiGuide","summary":"Readable public API guide","responses":{"200":{"description":"Guide","content":{"text/html":{"schema":{"type":"string"}}}},"429":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headApiGuide","responses":{"200":{"description":"Guide headers only"}}}},"/api/openapi.json":{"get":{"operationId":"apiOpenApi","summary":"OpenAPI 3.1.2 document","responses":{"200":{"description":"Specification document, not a success envelope.","content":{"application/json":{"schema":{"type":"object","required":["openapi","info","paths"]}}}},"429":{"description":"Success","headers":{"Cache-Control":{"schema":{"type":"string","const":"private, no-store"}},"X-Robots-Tag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"operationId":"headOpenApi","responses":{"200":{"description":"Specification headers only"}}}}},"components":{"schemas":{"Links":{"type":"object","properties":{"self":{"type":"string","format":"uri"},"page":{"type":"string","format":"uri"}},"required":["self","page"],"additionalProperties":false},"Reference":{"type":"object","properties":{"type":{"type":"string","enum":["authors","books","articles"]},"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"},"slug":{"type":"string"},"label":{"type":"string"},"links":{"$ref":"#/components/schemas/Links"}},"required":["type","id","slug","label","links"],"additionalProperties":false},"Text":{"type":"object","properties":{"plain_text":{"type":"string"},"html":{"type":"string","description":"Escaped text with safe em/strong/links only; links absolute."}},"required":["plain_text","html"],"additionalProperties":false},"Link":{"type":"object","properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"}},"required":["label","url"],"additionalProperties":false},"Asset":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"mime_type":{"type":"string","enum":["image/jpeg","image/png","image/webp","application/pdf"]},"size_bytes":{"type":"integer","minimum":1},"width":{"type":["integer","null"],"minimum":200},"height":{"type":["integer","null"],"minimum":200},"alt_text":{"type":["string","null"]},"caption":{"type":["string","null"]}},"required":["url","mime_type","size_bytes","width","height","alt_text","caption"],"additionalProperties":false},"OptionalAsset":{"anyOf":[{"$ref":"#/components/schemas/Asset"},{"type":"null"}]},"Author":{"type":"object","properties":{"type":{"const":"authors"},"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"},"slug":{"type":"string"},"links":{"$ref":"#/components/schemas/Links"},"legacy_ids":{"type":"array","items":{"type":"string"},"maxItems":10},"display_name":{"type":"string"},"short_biography":{"type":"string"},"biography":{"type":"string"},"photograph":{"$ref":"#/components/schemas/OptionalAsset"},"website":{"type":["string","null"],"format":"uri"},"social_links":{"type":"array","items":{"$ref":"#/components/schemas/Link"}},"books":{"type":"array","items":{"$ref":"#/components/schemas/Reference"},"maxItems":25},"articles":{"type":"array","items":{"$ref":"#/components/schemas/Reference"},"maxItems":25},"collections":{"type":"object","properties":{"books":{"type":"string","format":"uri"},"articles":{"type":"string","format":"uri"}},"required":["books","articles"],"additionalProperties":false}},"required":["type","id","slug","links","legacy_ids","display_name","short_biography","biography","photograph","website","social_links","books","articles","collections"],"additionalProperties":false},"Contributor":{"type":"object","properties":{"type":{"const":"authors"},"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"},"slug":{"type":"string"},"label":{"type":"string"},"links":{"$ref":"#/components/schemas/Links"},"role":{"type":"string"},"position":{"type":"integer","minimum":0}},"required":["type","id","slug","label","links","role","position"],"additionalProperties":false},"Book":{"type":"object","properties":{"type":{"const":"books"},"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"},"slug":{"type":"string"},"links":{"$ref":"#/components/schemas/Links"},"legacy_ids":{"type":"array","items":{"type":"string"},"maxItems":10},"title":{"type":"string"},"subtitle":{"type":["string","null"]},"description":{"$ref":"#/components/schemas/Text"},"contributors":{"type":"array","items":{"$ref":"#/components/schemas/Contributor"},"maxItems":100},"cover":{"$ref":"#/components/schemas/OptionalAsset"},"isbn10":{"type":["string","null"]},"isbn13":{"type":["string","null"],"description":"Primary paperback ISBN-13, or null. Additional assigned formats are in editions."},"formats":{"type":["string","null"],"description":"Existing free-text format description, unchanged; not populated from ISBN assignments."},"publication_date":{"type":["string","null"],"format":"date","description":"Book release calendar date in YYYY-MM-DD, or null when unknown. No time-zone conversion or creation-date fallback."},"purchase_links":{"type":"array","items":{"$ref":"#/components/schemas/Link"}},"sample_pdf":{"$ref":"#/components/schemas/OptionalAsset"},"sample_label":{"type":["string","null"]},"articles":{"type":"array","items":{"$ref":"#/components/schemas/Reference"},"maxItems":25},"featured":{"type":"boolean","description":"Owner-selected featured status. Featured books precede nonfeatured books in default book ordering."},"editions":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/BookEdition"},"description":"Assigned ISBNs by format. No implied availability. Empty array when unassigned."}},"required":["type","id","slug","links","legacy_ids","title","subtitle","description","contributors","cover","isbn10","isbn13","formats","publication_date","purchase_links","sample_pdf","sample_label","articles","featured","editions"],"additionalProperties":false},"BodyBlock":{"oneOf":[{"type":"object","properties":{"type":{"enum":["paragraph","heading","quote"]},"plain_text":{"type":"string"},"html":{"type":"string"}},"required":["type","plain_text","html"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"image"},"image":{"$ref":"#/components/schemas/OptionalAsset"}},"required":["type","image"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"list"},"items":{"type":"array","items":{"$ref":"#/components/schemas/Text"},"maxItems":100}},"required":["type","items"],"additionalProperties":false}]},"Article":{"type":"object","properties":{"type":{"const":"articles"},"id":{"type":"string","pattern":"^[1-9][0-9]{0,18}$"},"slug":{"type":"string"},"links":{"$ref":"#/components/schemas/Links"},"legacy_ids":{"type":"array","items":{"type":"string"},"maxItems":10},"title":{"type":"string"},"subtitle":{"type":["string","null"]},"excerpt":{"type":"string"},"body":{"type":"object","properties":{"plain_text":{"type":"string"},"blocks":{"type":"array","items":{"$ref":"#/components/schemas/BodyBlock"},"maxItems":1000}},"required":["plain_text","blocks"],"additionalProperties":false},"byline":{"type":"string"},"byline_authors":{"type":"array","items":{"$ref":"#/components/schemas/Reference"},"maxItems":1},"publication_date":{"type":["string","null"],"format":"date"},"images":{"type":"array","items":{"$ref":"#/components/schemas/Asset"},"maxItems":4},"pdf":{"$ref":"#/components/schemas/OptionalAsset"},"pdf_label":{"type":["string","null"]},"conversation":{"type":"object","properties":{"question":{"type":["string","null"]},"invitation":{"$ref":"#/components/schemas/Text"},"links":{"type":"array","items":{"$ref":"#/components/schemas/Link"}}},"required":["question","invitation","links"],"additionalProperties":false},"related_authors":{"type":"array","items":{"$ref":"#/components/schemas/Reference"},"maxItems":100},"related_books":{"type":"array","items":{"$ref":"#/components/schemas/Reference"},"maxItems":100}},"required":["type","id","slug","links","legacy_ids","title","subtitle","excerpt","body","byline","byline_authors","publication_date","images","pdf","pdf_label","conversation","related_authors","related_books"],"additionalProperties":false},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"enum":["invalid_parameters","not_found","method_not_allowed","rate_limit_exceeded","service_unavailable"]},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"Root":{"type":"object","properties":{"data":{"type":"object","properties":{"name":{"type":"string"},"version":{"const":"v1"},"collections":{"type":"object","properties":{"authors":{"type":"string","format":"uri"},"books":{"type":"string","format":"uri"},"articles":{"type":"string","format":"uri"}},"required":["authors","books","articles"],"additionalProperties":false},"documentation":{"type":"string","format":"uri"},"openapi":{"type":"string","format":"uri"}},"required":["name","version","collections","documentation","openapi"],"additionalProperties":false}},"required":["data"],"additionalProperties":false},"AuthorDetail":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Author"}},"required":["data"],"additionalProperties":false},"AuthorCollection":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Author"},"maxItems":100},"meta":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":10000},"per_page":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"total_pages":{"type":"integer","minimum":0}},"required":["page","per_page","total","total_pages"],"additionalProperties":false},"links":{"type":"object","properties":{"self":{"type":"string","format":"uri"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"}},"required":["self","next","previous"],"additionalProperties":false}},"required":["data","meta","links"],"additionalProperties":false},"BookDetail":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Book"}},"required":["data"],"additionalProperties":false},"BookCollection":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Book"},"maxItems":100},"meta":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":10000},"per_page":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"total_pages":{"type":"integer","minimum":0}},"required":["page","per_page","total","total_pages"],"additionalProperties":false},"links":{"type":"object","properties":{"self":{"type":"string","format":"uri"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"}},"required":["self","next","previous"],"additionalProperties":false}},"required":["data","meta","links"],"additionalProperties":false},"ArticleDetail":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Article"}},"required":["data"],"additionalProperties":false},"ArticleCollection":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Article"},"maxItems":100},"meta":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"maximum":10000},"per_page":{"type":"integer","minimum":1,"maximum":100},"total":{"type":"integer","minimum":0},"total_pages":{"type":"integer","minimum":0}},"required":["page","per_page","total","total_pages"],"additionalProperties":false},"links":{"type":"object","properties":{"self":{"type":"string","format":"uri"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"}},"required":["self","next","previous"],"additionalProperties":false}},"required":["data","meta","links"],"additionalProperties":false},"BookEdition":{"type":"object","description":"Assigned format/ISBN metadata only; not an availability or purchase offer.","properties":{"format":{"type":"string","enum":["Paperback","Hardback","EPUB"]},"isbn10":{"type":["string","null"],"pattern":"^[0-9]{9}[0-9X]$"},"isbn13":{"type":["string","null"],"pattern":"^97[89][0-9]{10}$"}},"required":["format","isbn10","isbn13"],"additionalProperties":false}}}}