{"openapi":"3.1.0","info":{"title":"AIvikings Pricing API","description":"Independent public domain-pricing service. Upstream costs are never returned.","version":"0.3.0"},"paths":{"/v1/pricing/health":{"get":{"summary":"Health","operationId":"health_v1_pricing_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/prices":{"get":{"summary":"Prices","operationId":"prices_v1_prices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogResponse"}}}}}}},"/v1/quote":{"get":{"summary":"Quote","operationId":"quote_v1_quote_get","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string","minLength":3,"maxLength":253,"examples":["example.com"],"title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainQuote"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CatalogPrice":{"properties":{"tld":{"type":"string","title":"Tld"},"currency":{"type":"string","title":"Currency"},"first_year_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"First Year Price"},"standard_registration_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Standard Registration Price"},"promo_registration_price":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Promo Registration Price"},"transfer_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Transfer Price"},"renewal_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Renewal Price"},"promo_active":{"type":"boolean","title":"Promo Active","default":false},"pricing_rule":{"type":"string","title":"Pricing Rule","default":"standard"},"minimum_registration_years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Minimum Registration Years","default":1},"maximum_registration_years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Maximum Registration Years","default":10}},"type":"object","required":["tld","currency","first_year_price","standard_registration_price","transfer_price","renewal_price"],"title":"CatalogPrice"},"CatalogResponse":{"properties":{"count":{"type":"integer","title":"Count"},"prices":{"items":{"$ref":"#/components/schemas/CatalogPrice"},"type":"array","title":"Prices"},"source":{"type":"string","title":"Source"},"stale":{"type":"boolean","title":"Stale","default":false},"cached_at":{"type":"string","format":"date-time","title":"Cached At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["count","prices","source","cached_at","expires_at"],"title":"CatalogResponse"},"DomainQuote":{"properties":{"domain":{"type":"string","title":"Domain"},"tld":{"type":"string","title":"Tld"},"currency":{"type":"string","title":"Currency"},"first_year_price":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"First Year Price"},"minimum_registration_years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Minimum Registration Years","default":1},"maximum_registration_years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Maximum Registration Years","default":10},"minimum_registration_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Minimum Registration Price"},"standard_registration_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Standard Registration Price"},"promo_registration_price":{"anyOf":[{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"},{"type":"null"}],"title":"Promo Registration Price"},"transfer_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Transfer Price"},"renewal_price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Renewal Price"},"promo_active":{"type":"boolean","title":"Promo Active","default":false},"is_premium":{"type":"boolean","title":"Is Premium","default":false},"registration_prices":{"items":{"$ref":"#/components/schemas/RegistrationPrice"},"type":"array","title":"Registration Prices"},"pricing_rule":{"type":"string","title":"Pricing Rule"},"source":{"type":"string","title":"Source"},"stale":{"type":"boolean","title":"Stale","default":false},"cached_at":{"type":"string","format":"date-time","title":"Cached At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["domain","tld","currency","minimum_registration_price","standard_registration_price","transfer_price","renewal_price","registration_prices","pricing_rule","source","cached_at","expires_at"],"title":"DomainQuote"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status"},"service":{"type":"string","title":"Service","default":"aivikings-pricing"},"catalog_entries":{"type":"integer","title":"Catalog Entries"},"upstream_configured":{"type":"boolean","title":"Upstream Configured"}},"type":"object","required":["status","catalog_entries","upstream_configured"],"title":"HealthResponse"},"RegistrationPrice":{"properties":{"period_years":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Period Years"},"price":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Price"}},"type":"object","required":["period_years","price"],"title":"RegistrationPrice"},"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"}}}}