addedInput schema / properties / currency
Added value: +{
+ "description": "Currency to show prices in (ISO 4217, e.g. \"EUR\", \"GBP\", \"USD\"): pass the traveller's currency whenever you know it (their country, their words, prices they quoted). Default: the currency of the MyBestSim page in the conversation language (EUR for fr, de, es, it, nl, pt…; USD for en; GBP is never assumed). Prices are converted exactly as that page shows them.",
+ "enum": [
+ "USD",
+ "EUR",
+ "GBP",
+ "CAD",
+ "AUD",
+ "JPY",
+ "CNY",
+ "KRW",
+ "INR",
+ "THB",
+ "IDR",
+ "MYR",
+ "SGD",
+ "PHP",
+ "VND",
+ "PKR",
+ "BDT",
+ "LKR",
+ "AED",
+ "SAR",
+ "ILS",
+ "TRY",
+ "ZAR",
+ "KES",
+ "NGN",
+ "EGP",
+ "MAD",
+ "BRL",
+ "MXN",
+ "COP",
+ "CLP",
+ "PEN",
+ "NZD",
+ "CHF",
+ "SEK",
+ "NOK",
+ "DKK",
+ "PLN",
+ "CZK",
+ "HUF",
+ "RON",
+ "BGN",
+ "RUB"
+ ],
+ "type": "string"
+}
changedOutput schema / properties / combination / anyOf
Previous value: -[
- {
- "description": "Mix (a plan for some stages, other plans for the rest): the recommended mix, or the cheapest mix when it costs less than (a) and (b); null otherwise.",
- "properties": {
- "esimCount": {
- "type": "integer"
- },
- "links": {
- "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "segments": {
- "items": {
- "description": "One eSIM and the stages it covers.",
- "properties": {
- "dataGb": {
- "type": [
- "number",
- "null"
- ]
- },
- "days": {
- "description": "Validity needed.",
- "type": "integer"
- },
- "pageUrl": {
- "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
- "type": "string"
- },
- "plan": {
- "properties": {
- "calls": {
- "type": "boolean"
- },
- "countryCount": {
- "type": "integer"
- },
- "coverage": {
- "enum": [
- "country",
- "regional",
- "global"
- ],
- "type": "string"
- },
- "dataGb": {
- "description": "Total data in GB; null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "dataLabel": {
- "type": "string"
- },
- "durationDays": {
- "type": "integer"
- },
- "fiveG": {
- "type": "boolean"
- },
- "hotspot": {
- "type": "boolean"
- },
- "planId": {
- "description": "Identifier to pass to get_esim_plan.",
- "type": "string"
- },
- "priceEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "pricePerGbUsd": {
- "description": "Null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "priceUsd": {
- "type": "number"
- },
- "provider": {
- "type": "string"
- },
- "providerSlug": {
- "type": "string"
- },
- "regionName": {
- "type": [
- "string",
- "null"
- ]
- },
- "sms": {
- "type": "boolean"
- },
- "unlimited": {
- "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
- "type": "boolean"
- },
- "url": {
- "description": "MyBestSim comparison page that lists this plan.",
- "type": "string"
- }
- },
- "required": [
- "planId",
- "provider",
- "providerSlug",
- "unlimited",
- "dataGb",
- "dataLabel",
- "durationDays",
- "priceUsd",
- "priceEur",
- "pricePerGbUsd",
- "coverage",
- "regionName",
- "countryCount",
- "fiveG",
- "hotspot",
- "calls",
- "sms",
- "url"
- ],
- "type": "object"
- },
- "stages": {
- "description": "Indexes (0-based) of the stages covered, in travel order.",
- "items": {
- "type": "integer"
- },
- "type": "array"
- }
- },
- "required": [
- "stages",
- "days",
- "dataGb",
- "plan",
- "pageUrl"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "totalEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "totalUsd": {
- "type": "number"
- }
- },
- "required": [
- "totalUsd",
- "totalEur",
- "esimCount",
- "segments",
- "links"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "description": "Mix (a plan for some stages, other plans for the rest): the recommended mix, or the cheapest mix when it costs less than (a) and (b); null otherwise.",
+ "properties": {
+ "esimCount": {
+ "type": "integer"
+ },
+ "links": {
+ "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "segments": {
+ "items": {
+ "description": "One eSIM and the stages it covers.",
+ "properties": {
+ "dataGb": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "days": {
+ "description": "Validity needed.",
+ "type": "integer"
+ },
+ "pageUrl": {
+ "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
+ "type": "string"
+ },
+ "plan": {
+ "properties": {
+ "calls": {
+ "type": "boolean"
+ },
+ "countryCount": {
+ "type": "integer"
+ },
+ "coverage": {
+ "enum": [
+ "country",
+ "regional",
+ "global"
+ ],
+ "type": "string"
+ },
+ "dataGb": {
+ "description": "Total data in GB; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "dataLabel": {
+ "type": "string"
+ },
+ "durationDays": {
+ "type": "integer"
+ },
+ "fiveG": {
+ "type": "boolean"
+ },
+ "hotspot": {
+ "type": "boolean"
+ },
+ "planId": {
+ "description": "Identifier to pass to get_esim_plan.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price in the response currency, as the MyBestSim page shows it.",
+ "type": "number"
+ },
+ "priceEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGb": {
+ "description": "Price per GB in the response currency; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGbUsd": {
+ "description": "Null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "priceUsd": {
+ "type": "number"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "providerSlug": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sms": {
+ "type": "boolean"
+ },
+ "unlimited": {
+ "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
+ "type": "boolean"
+ },
+ "url": {
+ "description": "MyBestSim comparison page that lists this plan.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "planId",
+ "provider",
+ "providerSlug",
+ "unlimited",
+ "dataGb",
+ "dataLabel",
+ "durationDays",
+ "price",
+ "pricePerGb",
+ "priceUsd",
+ "priceEur",
+ "pricePerGbUsd",
+ "coverage",
+ "regionName",
+ "countryCount",
+ "fiveG",
+ "hotspot",
+ "calls",
+ "sms",
+ "url"
+ ],
+ "type": "object"
+ },
+ "stages": {
+ "description": "Indexes (0-based) of the stages covered, in travel order.",
+ "items": {
+ "type": "integer"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "stages",
+ "days",
+ "dataGb",
+ "plan",
+ "pageUrl"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "total": {
+ "description": "Sum of the plan prices in the response currency.",
+ "type": "number"
+ },
+ "totalEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "totalUsd": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "total",
+ "totalUsd",
+ "totalEur",
+ "esimCount",
+ "segments",
+ "links"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
addedOutput schema / properties / currency / description
Added value: +"Currency of price, pricePerGb and totals (ISO 4217)."
addedOutput schema / properties / currencySymbol
Added value: +{
+ "description": "Symbol the MyBestSim page uses for that currency.",
+ "type": "string"
+}
addedOutput schema / properties / optionsByEsimCount / items / properties / total
Added value: +{
+ "description": "In the response currency.",
+ "type": "number"
+}
changedOutput schema / properties / optionsByEsimCount / items / required
Previous value: -[
- "esimCount",
- "totalUsd",
- "stageGroups"
-]New value: +[
+ "esimCount",
+ "total",
+ "totalUsd",
+ "stageGroups"
+]
changedOutput schema / properties / perStage / anyOf
Previous value: -[
- {
- "description": "(b) The best plan for each stage; null when a stage has no qualifying plan.",
- "properties": {
- "esimCount": {
- "type": "integer"
- },
- "links": {
- "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "segments": {
- "items": {
- "description": "One eSIM and the stages it covers.",
- "properties": {
- "dataGb": {
- "type": [
- "number",
- "null"
- ]
- },
- "days": {
- "description": "Validity needed.",
- "type": "integer"
- },
- "pageUrl": {
- "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
- "type": "string"
- },
- "plan": {
- "properties": {
- "calls": {
- "type": "boolean"
- },
- "countryCount": {
- "type": "integer"
- },
- "coverage": {
- "enum": [
- "country",
- "regional",
- "global"
- ],
- "type": "string"
- },
- "dataGb": {
- "description": "Total data in GB; null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "dataLabel": {
- "type": "string"
- },
- "durationDays": {
- "type": "integer"
- },
- "fiveG": {
- "type": "boolean"
- },
- "hotspot": {
- "type": "boolean"
- },
- "planId": {
- "description": "Identifier to pass to get_esim_plan.",
- "type": "string"
- },
- "priceEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "pricePerGbUsd": {
- "description": "Null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "priceUsd": {
- "type": "number"
- },
- "provider": {
- "type": "string"
- },
- "providerSlug": {
- "type": "string"
- },
- "regionName": {
- "type": [
- "string",
- "null"
- ]
- },
- "sms": {
- "type": "boolean"
- },
- "unlimited": {
- "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
- "type": "boolean"
- },
- "url": {
- "description": "MyBestSim comparison page that lists this plan.",
- "type": "string"
- }
- },
- "required": [
- "planId",
- "provider",
- "providerSlug",
- "unlimited",
- "dataGb",
- "dataLabel",
- "durationDays",
- "priceUsd",
- "priceEur",
- "pricePerGbUsd",
- "coverage",
- "regionName",
- "countryCount",
- "fiveG",
- "hotspot",
- "calls",
- "sms",
- "url"
- ],
- "type": "object"
- },
- "stages": {
- "description": "Indexes (0-based) of the stages covered, in travel order.",
- "items": {
- "type": "integer"
- },
- "type": "array"
- }
- },
- "required": [
- "stages",
- "days",
- "dataGb",
- "plan",
- "pageUrl"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "totalEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "totalUsd": {
- "type": "number"
- }
- },
- "required": [
- "totalUsd",
- "totalEur",
- "esimCount",
- "segments",
- "links"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "description": "(b) The best plan for each stage; null when a stage has no qualifying plan.",
+ "properties": {
+ "esimCount": {
+ "type": "integer"
+ },
+ "links": {
+ "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "segments": {
+ "items": {
+ "description": "One eSIM and the stages it covers.",
+ "properties": {
+ "dataGb": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "days": {
+ "description": "Validity needed.",
+ "type": "integer"
+ },
+ "pageUrl": {
+ "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
+ "type": "string"
+ },
+ "plan": {
+ "properties": {
+ "calls": {
+ "type": "boolean"
+ },
+ "countryCount": {
+ "type": "integer"
+ },
+ "coverage": {
+ "enum": [
+ "country",
+ "regional",
+ "global"
+ ],
+ "type": "string"
+ },
+ "dataGb": {
+ "description": "Total data in GB; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "dataLabel": {
+ "type": "string"
+ },
+ "durationDays": {
+ "type": "integer"
+ },
+ "fiveG": {
+ "type": "boolean"
+ },
+ "hotspot": {
+ "type": "boolean"
+ },
+ "planId": {
+ "description": "Identifier to pass to get_esim_plan.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price in the response currency, as the MyBestSim page shows it.",
+ "type": "number"
+ },
+ "priceEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGb": {
+ "description": "Price per GB in the response currency; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGbUsd": {
+ "description": "Null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "priceUsd": {
+ "type": "number"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "providerSlug": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sms": {
+ "type": "boolean"
+ },
+ "unlimited": {
+ "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
+ "type": "boolean"
+ },
+ "url": {
+ "description": "MyBestSim comparison page that lists this plan.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "planId",
+ "provider",
+ "providerSlug",
+ "unlimited",
+ "dataGb",
+ "dataLabel",
+ "durationDays",
+ "price",
+ "pricePerGb",
+ "priceUsd",
+ "priceEur",
+ "pricePerGbUsd",
+ "coverage",
+ "regionName",
+ "countryCount",
+ "fiveG",
+ "hotspot",
+ "calls",
+ "sms",
+ "url"
+ ],
+ "type": "object"
+ },
+ "stages": {
+ "description": "Indexes (0-based) of the stages covered, in travel order.",
+ "items": {
+ "type": "integer"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "stages",
+ "days",
+ "dataGb",
+ "plan",
+ "pageUrl"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "total": {
+ "description": "Sum of the plan prices in the response currency.",
+ "type": "number"
+ },
+ "totalEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "totalUsd": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "total",
+ "totalUsd",
+ "totalEur",
+ "esimCount",
+ "segments",
+ "links"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / recommendation / anyOf
Previous value: -[
- {
- "properties": {
- "links": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "reason": {
- "type": "string"
- },
- "strategy": {
- "enum": [
- "single",
- "perStage",
- "combination"
- ],
- "type": "string"
- },
- "totalUsd": {
- "type": "number"
- }
- },
- "required": [
- "strategy",
- "reason",
- "totalUsd",
- "links"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "properties": {
+ "links": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "reason": {
+ "type": "string"
+ },
+ "strategy": {
+ "enum": [
+ "single",
+ "perStage",
+ "combination"
+ ],
+ "type": "string"
+ },
+ "total": {
+ "type": "number"
+ },
+ "totalUsd": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "strategy",
+ "reason",
+ "total",
+ "totalUsd",
+ "links"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / singlePlan / anyOf
Previous value: -[
- {
- "description": "(a) One eSIM covering every stage; null when none qualifies.",
- "properties": {
- "esimCount": {
- "type": "integer"
- },
- "links": {
- "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "segments": {
- "items": {
- "description": "One eSIM and the stages it covers.",
- "properties": {
- "dataGb": {
- "type": [
- "number",
- "null"
- ]
- },
- "days": {
- "description": "Validity needed.",
- "type": "integer"
- },
- "pageUrl": {
- "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
- "type": "string"
- },
- "plan": {
- "properties": {
- "calls": {
- "type": "boolean"
- },
- "countryCount": {
- "type": "integer"
- },
- "coverage": {
- "enum": [
- "country",
- "regional",
- "global"
- ],
- "type": "string"
- },
- "dataGb": {
- "description": "Total data in GB; null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "dataLabel": {
- "type": "string"
- },
- "durationDays": {
- "type": "integer"
- },
- "fiveG": {
- "type": "boolean"
- },
- "hotspot": {
- "type": "boolean"
- },
- "planId": {
- "description": "Identifier to pass to get_esim_plan.",
- "type": "string"
- },
- "priceEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "pricePerGbUsd": {
- "description": "Null when unlimited.",
- "type": [
- "number",
- "null"
- ]
- },
- "priceUsd": {
- "type": "number"
- },
- "provider": {
- "type": "string"
- },
- "providerSlug": {
- "type": "string"
- },
- "regionName": {
- "type": [
- "string",
- "null"
- ]
- },
- "sms": {
- "type": "boolean"
- },
- "unlimited": {
- "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
- "type": "boolean"
- },
- "url": {
- "description": "MyBestSim comparison page that lists this plan.",
- "type": "string"
- }
- },
- "required": [
- "planId",
- "provider",
- "providerSlug",
- "unlimited",
- "dataGb",
- "dataLabel",
- "durationDays",
- "priceUsd",
- "priceEur",
- "pricePerGbUsd",
- "coverage",
- "regionName",
- "countryCount",
- "fiveG",
- "hotspot",
- "calls",
- "sms",
- "url"
- ],
- "type": "object"
- },
- "stages": {
- "description": "Indexes (0-based) of the stages covered, in travel order.",
- "items": {
- "type": "integer"
- },
- "type": "array"
- }
- },
- "required": [
- "stages",
- "days",
- "dataGb",
- "plan",
- "pageUrl"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "totalEur": {
- "type": [
- "number",
- "null"
- ]
- },
- "totalUsd": {
- "type": "number"
- }
- },
- "required": [
- "totalUsd",
- "totalEur",
- "esimCount",
- "segments",
- "links"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "description": "(a) One eSIM covering every stage; null when none qualifies.",
+ "properties": {
+ "esimCount": {
+ "type": "integer"
+ },
+ "links": {
+ "description": "MyBestSim pages to open, each listing the plan it is given for: the region page when it lists the plan covering several stages, else the country pages that list it.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "segments": {
+ "items": {
+ "description": "One eSIM and the stages it covers.",
+ "properties": {
+ "dataGb": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "days": {
+ "description": "Validity needed.",
+ "type": "integer"
+ },
+ "pageUrl": {
+ "description": "MyBestSim page to compare and buy, which lists the plan: the region page when the plan covers several stages and that page lists it, else the page of a stage that lists it.",
+ "type": "string"
+ },
+ "plan": {
+ "properties": {
+ "calls": {
+ "type": "boolean"
+ },
+ "countryCount": {
+ "type": "integer"
+ },
+ "coverage": {
+ "enum": [
+ "country",
+ "regional",
+ "global"
+ ],
+ "type": "string"
+ },
+ "dataGb": {
+ "description": "Total data in GB; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "dataLabel": {
+ "type": "string"
+ },
+ "durationDays": {
+ "type": "integer"
+ },
+ "fiveG": {
+ "type": "boolean"
+ },
+ "hotspot": {
+ "type": "boolean"
+ },
+ "planId": {
+ "description": "Identifier to pass to get_esim_plan.",
+ "type": "string"
+ },
+ "price": {
+ "description": "Price in the response currency, as the MyBestSim page shows it.",
+ "type": "number"
+ },
+ "priceEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGb": {
+ "description": "Price per GB in the response currency; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "pricePerGbUsd": {
+ "description": "Null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "priceUsd": {
+ "type": "number"
+ },
+ "provider": {
+ "type": "string"
+ },
+ "providerSlug": {
+ "type": "string"
+ },
+ "regionName": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sms": {
+ "type": "boolean"
+ },
+ "unlimited": {
+ "description": "True for an unlimited-data plan. Its fair-use policy is not published here: present it as \"Unlimited\" without inventing a cap.",
+ "type": "boolean"
+ },
+ "url": {
+ "description": "MyBestSim comparison page that lists this plan.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "planId",
+ "provider",
+ "providerSlug",
+ "unlimited",
+ "dataGb",
+ "dataLabel",
+ "durationDays",
+ "price",
+ "pricePerGb",
+ "priceUsd",
+ "priceEur",
+ "pricePerGbUsd",
+ "coverage",
+ "regionName",
+ "countryCount",
+ "fiveG",
+ "hotspot",
+ "calls",
+ "sms",
+ "url"
+ ],
+ "type": "object"
+ },
+ "stages": {
+ "description": "Indexes (0-based) of the stages covered, in travel order.",
+ "items": {
+ "type": "integer"
+ },
+ "type": "array"
+ }
+ },
+ "required": [
+ "stages",
+ "days",
+ "dataGb",
+ "plan",
+ "pageUrl"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "total": {
+ "description": "Sum of the plan prices in the response currency.",
+ "type": "number"
+ },
+ "totalEur": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "totalUsd": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "total",
+ "totalUsd",
+ "totalEur",
+ "esimCount",
+ "segments",
+ "links"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+]
addedOutput schema / properties / singlePlanAlternatives / items / properties / price
Added value: +{
+ "description": "Price in the response currency, as the MyBestSim page shows it.",
+ "type": "number"
+}
addedOutput schema / properties / singlePlanAlternatives / items / properties / pricePerGb
Added value: +{
+ "description": "Price per GB in the response currency; null when unlimited.",
+ "type": [
+ "number",
+ "null"
+ ]
+}
changedOutput schema / properties / singlePlanAlternatives / items / required
Previous value: -[
- "planId",
- "provider",
- "providerSlug",
- "unlimited",
- "dataGb",
- "dataLabel",
- "durationDays",
- "priceUsd",
- "priceEur",
- "pricePerGbUsd",
- "coverage",
- "regionName",
- "countryCount",
- "fiveG",
- "hotspot",
- "calls",
- "sms",
- "url"
-]New value: +[
+ "planId",
+ "provider",
+ "providerSlug",
+ "unlimited",
+ "dataGb",
+ "dataLabel",
+ "durationDays",
+ "price",
+ "pricePerGb",
+ "priceUsd",
+ "priceEur",
+ "pricePerGbUsd",
+ "coverage",
+ "regionName",
+ "countryCount",
+ "fiveG",
+ "hotspot",
+ "calls",
+ "sms",
+ "url"
+]
changedOutput schema / required
Previous value: -[
- "kind",
- "language",
- "currency",
- "totalDays",
- "dataGb",
- "assumptions",
- "stages",
- "singlePlan",
- "singlePlanAlternatives",
- "plansCoveringAllStages",
- "perStage",
- "optionsByEsimCount",
- "combination",
- "recommendation"
-]New value: +[
+ "kind",
+ "language",
+ "currency",
+ "currencySymbol",
+ "totalDays",
+ "dataGb",
+ "assumptions",
+ "stages",
+ "singlePlan",
+ "singlePlanAlternatives",
+ "plansCoveringAllStages",
+ "perStage",
+ "optionsByEsimCount",
+ "combination",
+ "recommendation"
+]