{"openapi":"3.0.0","paths":{"/api/auth/github":{"get":{"operationId":"Bu_githubLogin","parameters":[],"responses":{"200":{"description":""}},"tags":["Bu"]}},"/api/auth/github/callback":{"get":{"operationId":"Bu_githubCallback","parameters":[],"responses":{"200":{"description":""}},"tags":["Bu"]}},"/api/auth/google":{"get":{"operationId":"Bu_googleLogin","parameters":[],"responses":{"200":{"description":""}},"tags":["Bu"]}},"/api/auth/google/callback":{"get":{"operationId":"Bu_googleCallback","parameters":[],"responses":{"200":{"description":""}},"tags":["Bu"]}},"/api/auth/email/request":{"post":{"operationId":"Bu_requestEmailSignIn","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Y5"}}}},"responses":{"201":{"description":""}},"tags":["Bu"]}},"/api/auth/email/confirm":{"post":{"operationId":"Bu_confirmEmailSignIn","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/T2"}}}},"responses":{"201":{"description":""}},"tags":["Bu"]}},"/api/auth/email/test-code":{"get":{"operationId":"Bu_getEmailTestCode","parameters":[{"name":"email","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Bu"]}},"/api/auth/test/verify":{"post":{"operationId":"Bu_testVerify","parameters":[],"responses":{"201":{"description":""}},"tags":["Bu"]}},"/api/auth/me":{"get":{"operationId":"Bu_me","parameters":[],"responses":{"200":{"description":""}},"tags":["Bu"]}},"/api/auth/logout":{"get":{"operationId":"Bu_logout","parameters":[],"responses":{"200":{"description":""}},"tags":["Bu"]}},"/api/pet-types":{"get":{"operationId":"D2_list","parameters":[],"responses":{"200":{"description":""}},"summary":"List all pet types (e.g. dog, cat, horse)","tags":["pet-types"]}},"/api/pet-types/{id}":{"get":{"operationId":"D2_getOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Get one pet type by id","tags":["pet-types"]}},"/api/thing-types":{"get":{"operationId":"N2_list","parameters":[],"responses":{"200":{"description":""}},"summary":"List all thing types (e.g. plant, food, medication, product, activity)","tags":["thing-types"]}},"/api/thing-types/{id}":{"get":{"operationId":"N2_getOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Get one thing type by id","tags":["thing-types"]}},"/api/things":{"get":{"description":"Combine q/petType/thingType freely. With no params, returns every Thing (~450+ and growing).","operationId":"F2_list","parameters":[{"name":"q","required":false,"in":"query","description":"Free-text fuzzy search","schema":{"type":"string"}},{"name":"petType","required":false,"in":"query","description":"e.g. dog, cat, horse","schema":{"type":"string"}},{"name":"thingType","required":false,"in":"query","description":"e.g. plant, food, medication, product, activity","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Search or browse things dangerous to pets","tags":["things"]}},"/api/things/{id}":{"get":{"operationId":"F2_getOne","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Get one thing by id, including full details/source citation","tags":["things"]}},"/api/verification/quiz":{"get":{"operationId":"EJe_getQuiz","parameters":[],"responses":{"200":{"description":""}},"tags":["EJe"]},"post":{"operationId":"EJe_submitQuiz","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Function"}}}},"responses":{"201":{"description":""}},"tags":["EJe"]}},"/api/contributions":{"post":{"operationId":"MR_propose","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Function"}}}},"responses":{"201":{"description":""}},"tags":["MR"]}},"/api/contributions/pending":{"get":{"operationId":"MR_listPending","parameters":[],"responses":{"200":{"description":""}},"tags":["MR"]}},"/api/contributions/{thingId}/{sk}/approve":{"post":{"operationId":"MR_approve","parameters":[{"name":"thingId","required":true,"in":"path","schema":{"type":"string"}},{"name":"sk","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["MR"]}},"/sitemap.xml":{"get":{"operationId":"i7_sitemap","parameters":[],"responses":{"200":{"description":""}},"tags":["i7"]}},"/robots.txt":{"get":{"operationId":"o7_robots","parameters":[],"responses":{"200":{"description":""}},"tags":["o7"]}},"/api/mcp":{"get":{"operationId":"H2_streamingNotSupported","parameters":[],"responses":{"200":{"description":""}},"tags":["H2"]},"post":{"operationId":"H2_handle","parameters":[],"responses":{"201":{"description":""}},"tags":["H2"]}},"/api/verification/professional/request":{"post":{"operationId":"ME_request","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/x2"}}}},"responses":{"201":{"description":""}},"tags":["ME"]}},"/api/verification/professional/confirm":{"post":{"operationId":"ME_confirm","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/w2"}}}},"responses":{"201":{"description":""}},"tags":["ME"]}},"/api/verification/professional/pending":{"get":{"operationId":"ME_pending","parameters":[],"responses":{"200":{"description":""}},"tags":["ME"]}},"/api/verification/professional/{userId}/review":{"post":{"operationId":"ME_review","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IR"}}}},"responses":{"201":{"description":""}},"tags":["ME"]}}},"info":{"title":"badthingsforpets.com API","description":"Public read API for pet-danger data. GET endpoints are unauthenticated and CORS-open.","version":"1.0","contact":{}},"tags":[],"servers":[],"components":{"schemas":{"Y5":{"type":"object","properties":{}},"T2":{"type":"object","properties":{}},"Function":{"type":"object","properties":{}},"x2":{"type":"object","properties":{}},"w2":{"type":"object","properties":{}},"IR":{"type":"object","properties":{}}}}}