{"openapi":"3.1.0","info":{"title":"CloudCostCompare price API","version":"1.0.0","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax. Read-only, no key, updated weekly. Rate limits: none stated; please keep requests modest and cache responses."},"servers":[{"url":"https://cloudcostcompare.net/api/v1"}],"paths":{"/index.json":{"get":{"summary":"This API: version, endpoints and the note on what the prices are.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/providers.json":{"get":{"summary":"The four clouds, their price source and what the catalog holds for each.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/categories.json":{"get":{"summary":"Catalog categories with the providers and the files that hold their SKUs.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/regions.json":{"get":{"summary":"Cloud regions with the vendor's code, location and country, from each vendor's own region page.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/compliance.json":{"get":{"summary":"Which compliance programs each cloud names on its own pages, with a link to each vendor page. Not a statement of coverage by service or region.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/changes.json":{"get":{"summary":"The catalog change log: SKUs added, removed or changed in price.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/ai-models.json":{"get":{"summary":"AI model token prices, published discounts and context windows.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/examples.json":{"get":{"summary":"Example workload totals per cloud, from the same calculation as the estimator.","responses":{"200":{"description":"A response envelope.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{}}}}}}}}},"/openapi.json":{"get":{"summary":"This description.","responses":{"200":{"description":"An OpenAPI 3.1 document.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object"}}}}}}},"/catalog/{provider}/{category}/{region_group}.json":{"get":{"summary":"Catalog SKUs for one provider, category and region group, each with its source URL and the date it was read.","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","enum":["aws","azure","gcp","oci"]}},{"name":"category","in":"path","required":true,"schema":{"type":"string"},"description":"A category id from /categories.json."},{"name":"region_group","in":"path","required":true,"schema":{"type":"string"},"description":"A region group id, for example us-east or india."}],"responses":{"200":{"description":"The shard.","headers":{"Cache-Control":{"schema":{"type":"string"},"description":"Cached for an hour; the data changes weekly."}},"content":{"application/json":{"schema":{"type":"object","required":["updated_at","note","data"],"properties":{"updated_at":{"type":["string","null"],"description":"Date the data was last read from the vendors."},"note":{"type":"string","description":"On-demand list prices in USD, read weekly from each vendor's public price list. For planning: not live prices, not contracted or discounted prices, and no tax."},"data":{"type":"object","properties":{"provider":{"type":"string"},"category":{"type":"string"},"region_group":{"type":"string"},"count":{"type":"integer"},"skus":{"type":"array","items":{"$ref":"#/components/schemas/Sku"}}}}}}}}},"404":{"description":"No such shard. Look the files up in /categories.json."}}}}},"components":{"schemas":{"Sku":{"type":"object","required":["sku_id","name","region","pricing_model","unit","source_url","last_verified"],"properties":{"sku_id":{"type":"string","description":"The vendor's own id for the SKU."},"service":{"type":"string"},"name":{"type":"string"},"region":{"type":"string","description":"The vendor's region code."},"pricing_model":{"type":"string","enum":["on-demand","reserved-1y","reserved-3y","spot","savings-plan"]},"unit":{"type":"string","description":"hour for instance prices, GB-month for storage."},"price_usd_per_unit":{"type":["number","null"],"description":"Null means not published, never zero."},"price_usd_per_month_730h":{"type":["number","null"],"description":"Hourly price x 730; null for per-GB prices."},"source_url":{"type":"string","format":"uri"},"last_verified":{"type":"string","format":"date"},"attributes":{"type":"object","additionalProperties":true}}}}}}
