{"openapi":"3.1.0","info":{"title":"Currency & Crypto API","description":"Fiat exchange rates (ECB via Frankfurter) and crypto prices (CoinGecko) with x402 payments.","version":"1.0.0"},"paths":{"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/pricing":{"get":{"summary":"Pricing","operationId":"pricing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/rates/latest":{"post":{"summary":"Post Latest","operationId":"post_latest_rates_latest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rates/convert":{"post":{"summary":"Post Convert","operationId":"post_convert_rates_convert_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/rates/historical":{"post":{"summary":"Post Historical","operationId":"post_historical_rates_historical_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/crypto/price":{"post":{"summary":"Post Crypto Price","operationId":"post_crypto_price_crypto_price_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoPriceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/crypto/prices":{"post":{"summary":"Post Crypto Prices","operationId":"post_crypto_prices_crypto_prices_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CryptoPricesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ConvertRequest":{"properties":{"amount":{"type":"number","title":"Amount","examples":[100.0]},"from":{"type":"string","title":"From","examples":["USD"]},"to":{"type":"string","title":"To","examples":["GBP"]}},"type":"object","required":["amount","from","to"],"title":"ConvertRequest"},"CryptoPriceRequest":{"properties":{"coin":{"type":"string","title":"Coin","examples":["bitcoin"]},"vs_currency":{"type":"string","title":"Vs Currency","default":"usd","examples":["usd"]}},"type":"object","required":["coin"],"title":"CryptoPriceRequest"},"CryptoPricesRequest":{"properties":{"coins":{"items":{"type":"string"},"type":"array","title":"Coins","examples":[["btc","eth","sol"]]},"vs_currency":{"type":"string","title":"Vs Currency","default":"usd","examples":["usd"]}},"type":"object","required":["coins"],"title":"CryptoPricesRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HistoricalRequest":{"properties":{"date":{"type":"string","title":"Date","examples":["2024-01-15"]},"base":{"type":"string","title":"Base","default":"USD","examples":["USD"]},"symbols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Symbols","examples":[["GBP","EUR"]]}},"type":"object","required":["date"],"title":"HistoricalRequest"},"LatestRequest":{"properties":{"base":{"type":"string","title":"Base","default":"USD","examples":["USD"]},"symbols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Symbols","examples":[["GBP","EUR","JPY"]]}},"type":"object","title":"LatestRequest"},"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"}}}}