Generated by API Evangelist
Written by API Evangelist tooling for Airalo's API. It is a proposal applied on top of the contract, not a document Airalo publishes.
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Airalo Partner API
version: 1.0.0
extends: openapi/_original/airalo-partner-api-openapi.yml
x-apievangelist:
generated: '2026-09-19'
method: generated
source: >-
Records every difference between openapi/_original/airalo-partner-api-openapi.yml (the verbatim merge of
Airalo's own per-endpoint OpenAPI 3.0.1 fragments) and openapi/airalo-partner-api-openapi.yml (the refined
document this catalog scores). Airalo's fragments carry no operationIds, no info metadata, no security
scheme, path-shaped tags, and an Apidog environment-selector header parameter named "url" that is not part
of the API. Applying this overlay to the original reproduces the refined spec's enhancements.
actions:
- target: $.info
description: Airalo's fragments each ship an empty info block; supply real API metadata.
update:
title: Airalo Partner API
version: 2.0.0
termsOfService: https://www.airalo.com/more-info/terms-conditions
contact:
name: Airalo Partner Platform
url: https://partners.airalo.com
- target: $
description: Link the published documentation and declare the consolidated tag set.
update:
externalDocs:
description: Airalo Partner API documentation
url: https://developers.partners.airalo.com/introduction-752814m0
tags:
- name: Authentication
- name: Packages
- name: Orders
- name: Refunds
- name: eSIMs
- name: Usage
- name: Top-ups
- name: Devices
- name: Notifications
- name: Balance
- target: $.components.securitySchemes
description: >-
Declare the bearer scheme the docs describe in prose. Airalo's fragments ship an empty securitySchemes
object and model the Authorization header as a plain required header parameter on every operation.
update:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: >-
Access token from POST /v2/token (OAuth2 client_credentials grant with client_id + client_secret).
Tokens are valid for 24 hours; the token endpoint is limited to 3 requests per minute.
- target: $.paths[*][*]
description: >-
Remove the Apidog environment-selector header parameter "url" (default
https://partners-api.airalo.com) and the duplicated Authorization header parameter. Neither is part of
the API contract: the first is a docs-tool artifact, the second is expressed as the bearerAuth scheme.
remove_parameters:
- name: url
in: header
- name: Authorization
in: header
- target: $.paths[*][*]
description: >-
Add a stable operationId to every operation. Airalo publishes none, which makes the contract unusable for
SDK generation, Arazzo workflows, agent skills and tool crosswalks. Ids follow the summary text
(requestAccessToken, getPackages, submitOrder, submitOrderAsync, submitFutureOrder, cancelFutureOrders,
getFutureOrders, submitTopUpOrder, createEsimVoucher, requestRefund, getOrder, getOrderList, getEsim,
getEsimsList, getInstallationInstructions, getEsimUsage, getTopUpPackageList, getEsimPackageHistory,
updateEsimBrand, getCompatibleDeviceList, getCompatibleDeviceLiteList, optInNotification,
optOutNotification, getNotificationDetails, simulateWebhook, getBalance, getProductInformation).
update:
x-apievangelist-operation-id: assigned
- target: $.paths[*][*].tags
description: >-
Replace Apidog's path-shaped navigation tags ("REST API/Endpoints/Place order",
"REST API/Endpoints/Notifications/Notification: Low data") with ten flat resource tags. The original
navigation label is preserved on each operation as x-apidog-tag.
update:
x-apievangelist-tags: consolidated
- target: $.paths./v2/compatible-devices.get
description: >-
Set deprecated:true. Airalo's own page titles this operation "[Deprecated] Get compatible device list"
and its description warns it "is deprecated and will be eventually removed. Please use
/v2/compatible-devices-lite instead" — but the fragment ships deprecated:false.
update:
deprecated: true
x-replacement-operation: getCompatibleDeviceLiteList
- target: $.paths./v2/notifications/opt-in.post.requestBody.content.application/json.schema
description: >-
Airalo documents this one path three times, once per notification type, each fragment declaring a
different required set. The merged schema unions the properties, drops `levels` from required (it applies
only to webhook_credit_limit) and enumerates the three type values.
update:
properties:
type:
enum: [async_orders, webhook_low_data, webhook_credit_limit]
levels:
description: Required for type webhook_credit_limit only (credit-limit thresholds, e.g. [50,70,80,90]).
- target: $.paths[*][*]
description: Record which provider documentation page each operation was harvested from.
update:
x-source-page: assigned