{"openapi":"3.1.0","info":{"title":"SimoraGo plans API","version":"1.0.0","description":"Read-only travel eSIM plan facts: price with fetch time, data and validity, daily cap and throttle, hotspot policy, networks, activation, and whether checkout is open. Prices are live catalogue values; quote them with their fetchedAt.","contact":{"name":"Simplestoolbar Ltd","email":"support@simorago.com"},"termsOfService":"https://simorago.com/en/terms"},"servers":[{"url":"https://simorago.com"}],"paths":{"/api/plans":{"get":{"operationId":"listPlans","summary":"Plans grouped by destination","parameters":[{"name":"destination","in":"query","schema":{"type":"string"},"description":"Destination slug, e.g. japan."},{"name":"country","in":"query","schema":{"type":"string"},"description":"ISO 3166-1 alpha-2 code or country name. Filters plan by plan: keeps the plans that cover the country (or publish no country list), including regional ones; a regional plan that leaves the country out is dropped. Unrecognised input answers 400 unknown_country."},{"name":"locale","in":"query","schema":{"enum":["en","es","de","fr","pt","he"],"default":"en"}}],"responses":{"200":{"description":"Plans per destination.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"sample":{"const":true,"description":"Present only on a development server serving sample plans."},"currency":{"const":"USD"},"checkout":{"type":"object","properties":{"status":{"enum":["live","prelaunch"]},"purchasable":{"type":"boolean"},"urlTemplate":{"type":"string"}}},"policies":{"type":"object","properties":{"payment":{"type":"string","description":"What happens when a payment needs a manual check."},"refund":{"type":["string","null"],"description":"null until a refund policy is published; no refund promise is made."},"activation":{"type":"string"},"support":{"type":"string"},"pendingSignoff":{"type":"boolean","description":"true = wording is not final."}}},"destinations":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"countries":{"type":"array","items":{"type":"string"}},"carriers":{"type":"array","items":{"type":"string"}},"url":{"type":"string","format":"uri"},"plans":{"type":"array","items":{"$ref":"#/components/schemas/PlanFact"}}}}}}}}}},"400":{"description":"country names no country.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"unknown_country"}}}}}},"404":{"description":"No such destination.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"unknown_destination"}}}}}},"503":{"description":"The live catalogue is unavailable; no sample data is served.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"catalogue_unavailable"}}}}}}}}},"/api/plans/{id}":{"get":{"operationId":"getPlan","summary":"One plan by id","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"locale","in":"query","schema":{"enum":["en","es","de","fr","pt","he"],"default":"en"}}],"responses":{"200":{"description":"The plan with the store policies.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/PlanFact"},{"type":"object","properties":{"policies":{"type":"object","properties":{"payment":{"type":"string","description":"What happens when a payment needs a manual check."},"refund":{"type":["string","null"],"description":"null until a refund policy is published; no refund promise is made."},"activation":{"type":"string"},"support":{"type":"string"},"pendingSignoff":{"type":"boolean","description":"true = wording is not final."}}}}}]}}}},"404":{"description":"No such plan.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"unknown_plan"}}}}}},"503":{"description":"The live catalogue is unavailable; no sample data is served.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"const":"catalogue_unavailable"}}}}}}}}},"/api/products":{"get":{"operationId":"productsAlias","summary":"Permanent redirect to /api/plans","responses":{"200":{"description":"Followed redirect: same body as /api/plans."},"301":{"description":"Moved to /api/plans."}}}},"/api/dataset":{"get":{"operationId":"fairUseDataset","summary":"Travel eSIM fair-use dataset (CC BY 4.0)","responses":{"200":{"description":"Daily caps, throttle speeds and hotspot allowances by brand, each with a source.","headers":{"Access-Control-Allow-Origin":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"PlanFact":{"type":"object","required":["id","name","destination","pageUrl","price","hotspot","networks","notCovered","purchasable","checkoutUrl"],"properties":{"id":{"type":"string"},"name":{"type":"string","description":"Plain-language plan name; a daily-allowance plan is never called Unlimited."},"destination":{"type":"string","description":"Destination slug."},"pageUrl":{"type":"string","format":"uri"},"countries":{"type":"array","items":{"type":"string"},"description":"ISO 3166-1 alpha-2 codes."},"notCovered":{"type":"array","items":{"type":"string"},"description":"ISO codes the destination lists that this plan does not cover (sorted); empty when it covers them all, and also empty when the plan's `countries` is empty (coverage unknown, not 'covers nothing')."},"dataMb":{"type":["integer","null"],"description":"Total allowance in MB; null for daily-allowance plans."},"validityDays":{"type":"integer"},"activation":{"enum":["install","attach","unknown"],"description":"When the validity clock starts, as stated by the supplier."},"price":{"type":"object","properties":{"amount":{"type":"string","description":"Decimal string with two places."},"currency":{"const":"USD"},"fetchedAt":{"type":"string","format":"date-time"}}},"fairUse":{"type":"object","properties":{"dailyHighSpeedMb":{"type":["integer","null"]},"throttledKbps":{"type":["integer","null"]},"source":{"type":"string"}}},"hotspot":{"type":"object","description":"kind is one of same_as_data, blocked, capped (with mbPerDay), not_published.","required":["kind"],"properties":{"kind":{"enum":["same_as_data","blocked","capped","not_published"]},"mbPerDay":{"type":"integer"}}},"networks":{"type":"object","properties":{"list":{"type":"array","items":{"type":"string"}},"count":{"type":["integer","null"],"description":"Number of partner networks when the supplier gives a count instead of names (list is then empty)."},"fromSupplier":{"type":"boolean","description":"False means typical networks for the destination, not confirmed for this plan."}}},"sms":{"type":["boolean","null"],"description":"null = not confirmed."},"fiveG":{"type":"boolean"},"topUp":{"type":"boolean"},"purchasable":{"type":"boolean"},"checkoutUrl":{"type":["string","null"],"format":"uri","description":"null while checkout is closed."},"updatedAt":{"type":"string","format":"date-time"}}}}}}