{"openapi":"3.1.0","info":{"title":"SwissGPU Public Read-only API","version":"1.0.0"},"paths":{"/api/v1/offers":{"get":{"summary":"Offers","description":"Expose commercially offered models and live rates without reading fleet counts.","operationId":"offers_api_v1_offers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicOffers"}}}},"503":{"description":"Current catalogue prices could not be retrieved completely; retry later.","headers":{"Retry-After":{"description":"Minimum retry delay in seconds.","schema":{"type":"integer"}}}},"429":{"description":"Public ingress request limit exceeded; wait before retrying."}}}},"/api/v1/pricing":{"get":{"summary":"Public Pricing","description":"Add USD reference prices without changing catalog, rental or website billing.","operationId":"public_pricing_api_v1_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicPricing"}}}},"429":{"description":"Public ingress request limit exceeded; wait before retrying."}}}},"/api/status":{"get":{"summary":"Alerts","description":"List published notices without requiring a customer account.","operationId":"alerts_api_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/StatusAlertResponse"},"type":"array","title":"Response Alerts Api Status Get"}}}}}}}},"components":{"schemas":{"ExchangeRate":{"properties":{"rate":{"type":"number","title":"Rate"},"date":{"type":"string","format":"date","title":"Date"},"stale":{"type":"boolean","title":"Stale"},"source":{"type":"string","const":"ECB","title":"Source"}},"type":"object","required":["rate","date","stale","source"],"title":"ExchangeRate","description":"Identify the daily indicative USD-per-CHF rate and refresh failures."},"Offer":{"properties":{"gpu":{"type":"string","title":"Gpu"},"name":{"type":"string","title":"Name"},"availability":{"type":"string","const":"available","title":"Availability"},"hourly_price":{"type":"number","title":"Hourly Price"},"specifications":{"$ref":"#/components/schemas/OfferSpecs"},"model_url":{"type":"string","title":"Model Url"},"rental_url":{"type":"string","title":"Rental Url"},"specifications_url":{"type":"string","title":"Specifications Url"}},"additionalProperties":false,"type":"object","required":["gpu","name","availability","hourly_price","specifications","model_url","rental_url","specifications_url"],"title":"Offer","description":"Describe commercial availability independently of automated node allocation."},"OfferSpecs":{"properties":{"vram_gb":{"type":"string","title":"Vram Gb"},"cpu_cores":{"type":"string","title":"Cpu Cores"},"ram_gb":{"type":"string","title":"Ram Gb"},"storage":{"type":"string","title":"Storage"},"architecture":{"type":"string","title":"Architecture"}},"additionalProperties":false,"type":"object","required":["vram_gb","cpu_cores","ram_gb","storage","architecture"],"title":"OfferSpecs","description":"Expose catalogue ranges, never a physical machine's inventory or identity."},"PublicFees":{"properties":{"currency":{"type":"string","const":"CHF","title":"Currency"},"electricity_per_kwh":{"type":"number","title":"Electricity Per Kwh"},"installation_per_install":{"type":"number","title":"Installation Per Install"},"shared_ipv4_per_day":{"type":"number","title":"Shared Ipv4 Per Day"},"windows_setup":{"type":"number","title":"Windows Setup"},"windows_license_per_month":{"type":"number","title":"Windows License Per Month"},"windows_minimum_months":{"type":"integer","title":"Windows Minimum Months"},"windows_bring_your_own_license":{"type":"boolean","title":"Windows Bring Your Own License"}},"type":"object","required":["currency","electricity_per_kwh","installation_per_install","shared_ipv4_per_day","windows_setup","windows_license_per_month","windows_minimum_months","windows_bring_your_own_license"],"title":"PublicFees","description":"State the same additional charges documented on the public pricing page."},"PublicOffers":{"properties":{"currency":{"type":"string","const":"CHF","title":"Currency"},"unit":{"type":"string","const":"hour","title":"Unit"},"observed_at":{"type":"string","format":"date-time","title":"Observed At"},"offers":{"items":{"$ref":"#/components/schemas/Offer"},"type":"array","title":"Offers"},"fees":{"$ref":"#/components/schemas/PublicFees"},"billing_details_url":{"type":"string","title":"Billing Details Url"}},"type":"object","required":["currency","unit","observed_at","offers","fees","billing_details_url"],"title":"PublicOffers","description":"Keep the public wire contract explicit and free of private operational fields."},"PublicPricing":{"properties":{"unit":{"type":"string","const":"hour","title":"Unit"},"prices":{"additionalProperties":{"type":"number"},"type":"object","title":"Prices"},"currency":{"type":"string","const":"CHF","title":"Currency"},"prices_usd":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Prices Usd"},"usd_exchange_rate":{"anyOf":[{"$ref":"#/components/schemas/ExchangeRate"},{"type":"null"}]}},"type":"object","required":["unit","prices","currency","prices_usd","usd_exchange_rate"],"title":"PublicPricing","description":"Preserve CHF offers and add indicative USD values from one dated rate."},"StatusAlertResponse":{"properties":{"title":{"type":"string","maxLength":200,"minLength":1,"title":"Title"},"status":{"type":"string","enum":["planned","maintenance","completed","investigating","monitoring","resolved"],"title":"Status"},"description":{"type":"string","maxLength":10000,"minLength":1,"title":"Description"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"id":{"type":"integer","title":"Id"}},"additionalProperties":false,"type":"object","required":["title","status","description","starts_at","id"],"title":"StatusAlertResponse","description":"Expose database timestamps with their explicit UTC offset."}}}}