{"openapi":"3.1.0","info":{"title":"PokeTest TCG Investor API","description":"Pokemon TCG Investor API: live card prices (USD+EUR), trends, set EV, portfolio valuation + base Pokedex/lore. Built for RapidAPI listing, hosted on Vercel.","version":"1.0.0"},"paths":{"/":{"get":{"tags":["meta"],"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Root  Get"}}}}}}},"/health":{"get":{"tags":["meta"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/v1/status":{"get":{"tags":["meta"],"summary":"Status","operationId":"status_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Status V1 Status Get"}}}}}}},"/v1/cards/search":{"get":{"tags":["cards"],"summary":"Search Cards","operationId":"search_cards_v1_cards_search_get","parameters":[{"name":"name","in":"query","required":true,"schema":{"type":"string","minLength":2,"description":"Pokemon/card name, e.g. Charizard","title":"Name"},"description":"Pokemon/card name, e.g. Charizard"},{"name":"set","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by TCGdex set id, e.g. base1","title":"Set"},"description":"Filter by TCGdex set id, e.g. base1"},{"name":"rarity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by rarity, e.g. Rare","title":"Rarity"},"description":"Filter by rarity, e.g. Rare"},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"default":10,"title":"Pagesize"}},{"name":"enrich","in":"query","required":false,"schema":{"type":"boolean","description":"Fetch live pricing for each result","default":true,"title":"Enrich"},"description":"Fetch live pricing for each result"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Cards V1 Cards Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cards/{card_id}":{"get":{"tags":["cards"],"summary":"Get Card","operationId":"get_card_v1_cards__card_id__get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Card V1 Cards  Card Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/cards/{card_id}/price-history":{"get":{"tags":["cards"],"summary":"Price History","operationId":"price_history_v1_cards__card_id__price_history_get","parameters":[{"name":"card_id","in":"path","required":true,"schema":{"type":"string","title":"Card Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":2,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Price History V1 Cards  Card Id  Price History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pokemon/{name}":{"get":{"tags":["pokemon"],"summary":"Get Pokemon","operationId":"get_pokemon_v1_pokemon__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Pokemon V1 Pokemon  Name  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pokemon/{name}/cards":{"get":{"tags":["pokemon"],"summary":"Pokemon Cards","operationId":"pokemon_cards_v1_pokemon__name__cards_get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Pokemon Cards V1 Pokemon  Name  Cards Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sets/{set_id}":{"get":{"tags":["sets"],"summary":"Get Set","operationId":"get_set_v1_sets__set_id__get","parameters":[{"name":"set_id","in":"path","required":true,"schema":{"type":"string","title":"Set Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Set V1 Sets  Set Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sets/{set_id}/ev":{"get":{"tags":["sets"],"summary":"Set Ev","description":"Expected value = sum of singles market prices (sampled).","operationId":"set_ev_v1_sets__set_id__ev_get","parameters":[{"name":"set_id","in":"path","required":true,"schema":{"type":"string","title":"Set Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Set Ev V1 Sets  Set Id  Ev Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portfolio/value":{"post":{"tags":["portfolio"],"summary":"Portfolio Value","operationId":"portfolio_value_v1_portfolio_value_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Portfolio Value V1 Portfolio Value Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Holding":{"properties":{"id":{"type":"string","title":"Id","description":"TCGdex card id, e.g. base1-4"},"qty":{"type":"number","maximum":1000.0,"exclusiveMinimum":0.0,"title":"Qty","default":1}},"type":"object","required":["id"],"title":"Holding"},"PortfolioIn":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Holding"},"type":"array","title":"Items"},"currency":{"type":"string","title":"Currency","description":"USD or EUR totals","default":"USD"}},"type":"object","required":["items"],"title":"PortfolioIn"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}