{"openapi":"3.1.0","info":{"title":"Please Quote Me API","version":"1.0.0","description":"Read-only access to an oral history of creativity: quotes said BY a named person ABOUT other people or groups, with verified citations. No key needed; a Bearer API key raises your rate limit. All data is public and published-only."},"servers":[{"url":"https://pleasequoteme.com/api/v1"}],"security":[{},{"bearerAuth":[]}],"paths":{"/quotes":{"get":{"summary":"List quotes","description":"Published quotes, newest first.","parameters":[{"name":"q","in":"query","required":false,"description":"Full-text search over quote text","schema":{"type":"string"}},{"name":"category","in":"query","required":false,"description":"Category slug (rolls up the subtree)","schema":{"type":"string"}},{"name":"tag","in":"query","required":false,"description":"Tag name","schema":{"type":"string"}},{"name":"figure","in":"query","required":false,"description":"Figure slug (as speaker or subject)","schema":{"type":"string"}},{"name":"page","in":"query","required":false,"description":"Page number (default 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Results per page (max 100, default 25)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteList"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/quotes/{id}":{"get":{"summary":"Get a quote","description":"A single published quote.","parameters":[{"name":"id","in":"path","required":true,"description":"Quote id","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteEnvelope"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/people":{"get":{"summary":"List people","description":"Visible people, alphabetical.","parameters":[{"name":"page","in":"query","required":false,"description":"Page number (default 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Results per page (max 100, default 25)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FigureRefList"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/people/{slug}":{"get":{"summary":"Get a person","description":"A visible person; quotes via /quotes?figure=slug.","parameters":[{"name":"slug","in":"path","required":true,"description":"Person slug","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FigureEnvelope"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/groups":{"get":{"summary":"List groups","description":"Visible groups, alphabetical.","parameters":[{"name":"page","in":"query","required":false,"description":"Page number (default 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Results per page (max 100, default 25)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FigureRefList"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/groups/{slug}":{"get":{"summary":"Get a group","description":"A visible group, including members.","parameters":[{"name":"slug","in":"path","required":true,"description":"Group slug","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FigureEnvelope"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/categories":{"get":{"summary":"List categories","description":"The full category tree, flat.","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryList"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/categories/{slug}":{"get":{"summary":"Get a category","description":"A category and its children.","parameters":[{"name":"slug","in":"path","required":true,"description":"Category slug","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryEnvelope"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tags":{"get":{"summary":"List tags","description":"Tags with at least one published quote.","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagList"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/tags/{name}":{"get":{"summary":"Get a tag","description":"Quotes via /quotes?tag=name.","parameters":[{"name":"name","in":"path","required":true,"description":"Tag name","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagEnvelope"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/pairs/{a}/x/{b}":{"get":{"summary":"Get a pair","description":"The influence edge between two figures, both directions.","parameters":[{"name":"a","in":"path","required":true,"description":"First figure slug","schema":{"type":"string"}},{"name":"b","in":"path","required":true,"description":"Second figure slug","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairEnvelope"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/featured":{"get":{"summary":"List featured quotes","description":"The hand-picked featured pool.","parameters":[{"name":"page","in":"query","required":false,"description":"Page number (default 1)","schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"description":"Results per page (max 100, default 25)","schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteList"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key minted as `pqm_…`, sent as `Authorization: Bearer <key>`."}},"schemas":{"Problem":{"type":"object","properties":{"type":{"type":"string"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"}}},"Pagination":{"type":"object","properties":{"page":{"type":"integer"},"per_page":{"type":"integer"},"count":{"type":"integer"},"next_page":{"type":["integer","null"]},"prev_page":{"type":["integer","null"]}}},"FigureRef":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"kind":{"type":"string","enum":["person","group"]},"url":{"type":"string"}}},"Figure":{"allOf":[{"$ref":"#/components/schemas/FigureRef"},{"type":"object","properties":{"bio":{"type":["string","null"]},"quotes_said":{"type":"integer"},"quotes_about":{"type":"integer"},"members":{"type":"array","items":{"$ref":"#/components/schemas/FigureRef"}}}}]},"Citation":{"type":["object","null"],"properties":{"source_name":{"type":"string"},"url":{"type":["string","null"]},"source_kind":{"type":"string"},"quoted_on":{"type":["string","null"]}}},"Quote":{"type":"object","properties":{"id":{"type":"integer"},"text":{"type":"string"},"url":{"type":"string"},"speaker":{"$ref":"#/components/schemas/FigureRef"},"subjects":{"type":"array","items":{"$ref":"#/components/schemas/FigureRef"}},"citation":{"$ref":"#/components/schemas/Citation"},"featured":{"type":"boolean"},"published_at":{"type":["string","null"]}}},"Category":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"parent":{"type":["string","null"]}}},"Tag":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string"}}},"QuoteList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Quote"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"QuoteEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Quote"}}},"FigureRefList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FigureRef"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"FigureEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Figure"}}},"CategoryList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Category"}}}},"CategoryEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Category"}}},"TagList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}}}},"TagEnvelope":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Tag"}}},"PairEnvelope":{"type":"object","properties":{"data":{"type":"object","properties":{"a":{"$ref":"#/components/schemas/FigureRef"},"b":{"$ref":"#/components/schemas/FigureRef"},"a_about_b":{"type":"array","items":{"$ref":"#/components/schemas/Quote"}},"b_about_a":{"type":"array","items":{"$ref":"#/components/schemas/Quote"}}}}}}}}}