Download OpenAPI specification:Download
1GLOBAL Connect is a set of APIs designed for server-to-server integration, accessible over the internet, that enables the provisioning of a variety of connectivity solutions to users.
The main goal of the API is to enable our partners to easily order, activate, and manage 1GLOBAL's global connectivity.
1GLOBAL strives to implement best of breed security controls to its products and services. 1GLOBAL Connect API has considered security by design since it’s conception. This ensures that all layers from servers to data and source code follow a security by design approach.
1GLOBAL ensures all servers running Connect have a secure architecture and are securely hardened with configurations aligned with international and recognized standards.
Additionally, 1GLOBAL implements a strict vulnerability management program that continuously monitors for potential attack vectors along with the execution of periodic penetration tests to test our defences.
Knowing that preventive controls are just a part of the security puzzle, 1GLOBAL also operates a continuous monitoring and security incident response capability, within from our Cyber Defence Centre.
To maintain a high level of service for all clients of the platform, we enforce rate limiting on our APIs. These limits are applied based on the authentication credentials being used.
By default, the Connect API allows up to 1,000 requests per minute
per resource endpoint, which should be sufficient for most high-traffic applications. We monitor the request volume for each API client and apply throttling if the allowed limit is exceeded.
Depending on your requirements, we may adjust this limit or establish different limits for certain API calls. If the current rate limits do not meet your needs, please contact Service Desk to request an increase.
To prevent your systems from becoming unavailable, we strongly recommend implementing custom logic to handle the rate limiting quotas. For every API request that stays within the current rate limits, you will receive a response with the following HTTP headers:
HTTP Header | Description |
---|---|
x-rate-limit-limit |
The number of requests available for this API client. |
x-rate-limit-remaining |
The number of requests remaining in the current quota. |
x-rate-limit-reset |
The timestamp (Milliseconds since Unix Epoch) when the quota will reset |
If you exceed the rate limit quota, you will receive a 429 Too Many Requests
error, indicating that you have sent too many requests within the quota period.
Example:
{
"message": "Rate limit exceeded ! You reach the limit of 10 requests per 1 minutes",
"http_status_code": 429
}
Country/Currency | Currency Code |
---|---|
United States Dollar | USD |
Albanian Lek | ALL |
Algerian Dinar | DZD |
Argentine Peso | ARS |
Armenian Dram | AMD |
Australian Dollar | AUD |
Bahraini Dinar | BHD |
Bangladeshi Taka | BDT |
Barbadian Dollar | BBD |
Bolivian Boliviano | BOB |
Brazilian Real | BRL |
British Pound | GBP |
Brunei Dollar | BND |
Bulgarian Lev | BGN |
Cambodian Riel | KHR |
Canadian Dollar | CAD |
Central African CFA Franc | XAF |
Chilean Peso | CLP |
Chinese Yuan Renminbi | CNY |
Colombian Peso | COP |
Costa Rican Colon | CRC |
Czech Republic Koruna | CZK |
Danish Kroner | DKK |
Dominican Peso | DOP |
Egyptian Pound | EGP |
Euro | EUR |
Fijian Dollar | FJD |
Georgian Lari | GEL |
Hong Kong Dollar | HKD |
Hungarian Forint | HUF |
Icelandic Krona | ISK |
Indian Rupee | INR |
Indonesian Rupiah | IDR |
Israeli Shekel | ILS |
Jamaican Dollar | JMD |
Japanese Yen | JPY |
Jordanian Dinar | JOD |
Kazakhstani Tenge | KZT |
Kenyan Shilling | KES |
Kuwaiti Dinar | KWD |
Kyrgyzstani Som | KGS |
Lebanese Pound | LBP |
Macedonian Denar | MKD |
Malaysian Ringgit | MYR |
Mauritian Rupee | MUR |
Mexican Peso | MXN |
Moldovan Leu | MDL |
Moroccan Dirham | MAD |
Nepalese Rupee | NPR |
New Zealand Dollar | NZD |
Nigerian Naira | NGN |
Norwegian Krone | NOK |
Omani Rial | OMR |
Pakistani Rupee | PKR |
Peruvian Sol | PEN |
Philippine Peso | PHP |
Qatari Riyal | QAR |
Romanian Leu | RON |
Russian Ruble | RUB |
Saudi Riyal | SAR |
Serbian Dinar | RSD |
Singapore Dollar | SGD |
South African Rand | ZAR |
South Korean Won | KRW |
Special Drawing Rights | XDR |
Sri Lankan Rupee | LKR |
Swedish Krona | SEK |
Swiss Franc | CHF |
Taiwan Dollar | TWD |
Tajikistani Somoni | TJS |
Thai Baht | THB |
Trinidad and Tobago Dollar | TTD |
Tunisian Dinar | TND |
Turkish Lira | TRY |
UAE Dirham | AED |
Ugandan Shilling | UGX |
Ukrainian Hryvnia | UAH |
Uruguayan Peso | UYU |
Uzbekistani Som | UZS |
Vietnamese Dong | VND |
West African CFA Franc | XOF |
Polish Zloty | PLN |
Connect API will always send and receive currency in the smallest unit the currency allows. In practice, this means we will receive amounts in whole units, not decimals.
The specific unit used for currency in the API depends on whether it is a zero-decimal currency.
Zero-decimal currencies: For currencies that do not have decimal subunits, such as the Japanese Yen (JPY), the amount should be provided in the major unit of the currency. The major unit corresponds to the ISO 4217 code of the currency. For example, to specify an amount of JPY 15, set the amount as 15
.
Other currencies: For currencies that do have decimal subunits, Connect API supports values up to two decimal places in the major unit of the currency. This value must be converted to an integer by multiplying it by 100. For example, an amount of $3.53 should be provided as 3.53 x 100
, which is 353
.
We adhere to industry-standard conventions, allowing you to use familiar tools seamlessly. Our APIs are designed for self-service, guiding you through the next steps with ease. They are intuitive, well-documented, and backed by certifications to support smooth and secure integration.
To further enhance usability, we maintain consistent language across all services. This ensures a seamless experience, allowing you to quickly navigate and integrate different APIs without having to adapt to new terminology or conventions. The result is improved learnability, faster integration, and greater efficiency.
HAL standardizes the format of API resources and links, making it easier to navigate and interact with our APIs. By providing a consistent approach to hyperlinking between API resources, HAL allows seamless integration between different APIs, offering a more consumable and explorable experience.
One of HAL’s key advantages is that it is both machine-readable and human-readable, enabling you to quickly grasp the context from the API reference documentation.
We adopt this convention to structure resource and action links, ensuring compatibility with standard libraries for smoother and more efficient development.
{
...
"_links": {
"self": {
"href": "https://example.com/probs/1234"
},
"author": {
"href": "https://example.com/users/john"
}
}
}
To protect the service against overload, as well as to support client side iteration and batch processing experience, resource listing endpoints implement cursor-based pagination.
The only input required is the page size (using limit
parameter) and subsequent navigation can be done through the next/prev page links provided in each page's response payload.
To prevent misuse of the pagination feature, each API defines a maximum allowed page size (currently 40).
{
...
"_links": {
"self": { "href": "https://example.com/probs?limit=10" },
"prev": { "href": "https://example.com/probs?cursor=MTY3NjE1ODU1MS8yNUMxOTgxRjA1RDU5MDAwMDAwMA%3D%3D&limit=10" },
"next": { "href": "https://example.com/probs?cursor=MTY3NjEzMzkxMS8yNUMxMEYzNkJBODA1NTkwMDAwMDAw&limit=10" },
}
}
Correlation-Id
) using the api. This way we can easily identify a request or a sequence of events between both 1GLOBAL and the requester.1GLOBAL strives to maintain backward compatibility across its APIs to provide a consistent experience for clients. However, there are instances where introducing breaking changes becomes necessary to implement new features, improvements, compliance reasons or architectural updates, in that cases, a new version of the API will be made available. We follow a Header Versioning approach, combined with data-based versioning, to ensure that clients can smoothly transition to the updated version without disrupting their current integrations. Clear documentation, migration guides, and deprecation timelines will always accompany these changes to minimize any potential impact.
Any additive (non-breaking) changes will be incorporated into all supported API versions, ensuring compatibility while providing access to new features.
Non Breaking Change definition
Connect API follows standard HTTP status codes to communicate error information in a consistent and compliant manner following RFC7807
These status codes indicate an issue with the request that needs to be resolved. Once the issue is fixed, you can safely retry the call. Common examples include authentication errors (HTTP status code 401) or request body validation errors (HTTP status code 400).
These errors typically indicate server-side issues, ranging from configuration problems (which may be specific to a merchant or entity) to internal network connectivity issues. They can be transient, affecting only a single call, or persistent, impacting multiple calls over an extended period. In most cases, callers will be unable to resolve these issues on their own. The most common example of 5xx errors is timeouts.
{
"title": "Invalid request parameters",
"status": 400,
"detail": "Invalid request parameters",
"errors": [
{
"code": "MISSING_CONDITIONAL_MANDATORY_FIELD",
"detail": "Field(s) [first_name, last_name, email, address] cannot be null when field [id] is equal to [null]",
"json_path": "$.subscriber.id"
},
{
"code": "GENERIC_ERROR",
"detail": "must not be empty",
"json_path": "$.purchase_location"
}
],
"correlation_id": "daaccc90-dd03-471c-a892-0e8c5ec27026"
}
Name | Code |
---|---|
Alberta | AB |
British Columbia | BC |
Manitoba | MB |
New Brunswick | NB |
Newfoundland and Labrador | NL |
Northwest Territories | NT |
Nova Scotia | NS |
Nunavut | NU |
Ontario | ON |
Prince Edward Island | PE |
Quebec | QC |
Saskatchewan | SK |
Yukon | YT |
Name | Code |
---|---|
Alabama | AL |
Alaska | AK |
Arizona | AZ |
Arkansas | AR |
California | CA |
Colorado | CO |
Connecticut | CT |
Delaware | DE |
Florida | FL |
Georgia | GA |
Hawaii | HI |
Idaho | ID |
Illinois | IL |
Indiana | IN |
Iowa | IA |
Kansas | KS |
Kentucky | KY |
Louisiana | LA |
Maine | ME |
Maryland | MD |
Massachusetts | MA |
Michigan | MI |
Minnesota | MN |
Mississippi | MS |
Missouri | MO |
Montana | MT |
Nebraska | NE |
Nevada | NV |
New Hampshire | NH |
New Jersey | NJ |
New Mexico | NM |
New York | NY |
North Carolina | NC |
North Dakota | ND |
Ohio | OH |
Oklahoma | OK |
Oregon | OR |
Pennsylvania | PA |
Rhode Island | RI |
South Carolina | SC |
South Dakota | SD |
Tennessee | TN |
Texas | TX |
Utah | UT |
Vermont | VT |
Virginia | VA |
Washington | WA |
West Virginia | WV |
Wisconsin | WI |
Wyoming | WY |
"Lifecycle" refers to the series of stages or states that an entity (such as an order or product) goes through from its creation to its completion or termination. It represents the entire journey of the entity within the system, including all possible states and transitions.
This diagram provides an overview of the product lifecycle, detailing the various states and transitions a product can undergo, depending on user actions, scheduled product events, and network-triggered occurrences.
Start:
Scheduled:
Pending First Usage:
Active:
Depleted:
Terminated:
Canceled:
Expired:
Flow | Use case | Result |
---|---|---|
Activation | Fetch latest available information from Connect API and provision a new eSIM. | eSIM Ready to be installed (Activation code) |
Refresh Catalog | Synchronize data with Connect API catalog to get latest offerings. | Product Offerings and parameters (coverage area, duration, allowance amount) |
Quick Activation | Provision a new eSIM using catalog information that was pre-fetched. | eSIM Ready to be installed (Activation code) |
TopUP | Add a new Product to existing Subscription (eSIM). | New Product provisioned for existing eSIM |
Term | Description |
---|---|
Coverage Area | A coverage area where a particular allowance can be used. |
Product | Instance of the Offering that has been ordered & provisioned. |
Product Offerings | List of offerings available for order. |
Subscription | eSIM information regarding the subscription. |
Subscriber | Holds details about an individual that subscribed to a service or product, including personal or business information, contact details. |
Order | New SIMs and products are provisioned by sending orders to the 1GLOBAL Connect API. When the API receives an order request, it triggers an asynchronous process to prepare the SIM or provision a new product. |
Event | A webhook event is triggered upon the completion of specific actions, such as provisioning a new product or SIM. When the order is successfully processed or a significant change occurs (e.g., subscription update, product provisioning), a webhook event is sent to the designated endpoint, allowing external systems to respond to the event in real-time. This may include updating status, confirming provisioning, or triggering related workflows. |
The API adopts OAuth 2.0 with Client Credentials as its authentication mechanism, ensuring secure access to protected resources on behalf of a client application.
Although the same token can be used in multiple API calls, please be aware that these tokens have a limited duration so you need to include refresh logic in the client code, so that the token gets refreshed automatically without breaking your processing sequence.
Below is an explanation of how to obtain an access token using the Client Credentials flow, accompanied by examples.
Request an Access Token: To request an access token from the authorization server, initiate an HTTP POST request to the token endpoint. Include the following parameters:
grant_type
: Set to "client_credentials"
token_url
: authentication server endpointclient_id
: Your organization's client ID.client_secret
: Your organization's client secret.Receive the Access Token: Upon successful authentication, you'll receive an access token
curl -X POST \
https://api.1global.com/auth/realms/1global-connect/protocol/openid-connect/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&client_id=your_client_id&client_secret=your_client_secret'
OAuth 2.0
Configure New Token
form with the following values:https://api.1global.com/auth/realms/1global-connect/protocol/openid-connect/token
your_client_id
your_client_secret
Get New Access Token
button, which will trigger a popup saying 'Authentication complete'.Manage Access Tokens
popup, hit the Use Token
The Activation process provides a straightforward way to provision a new eSIM from the Connect API in seconds. This flow fetches the latest available information and provisions a new eSIM in one go.
We are not recomending to use Activation flow in production.
Please consider using a combination of: Refresh Catalog and Quick Activation
An order can be placed for a new customer by providing the customer’s information or using the Subscriber ID.
Activation order provides an easies way to get eSIM from Connect API in seconds, please folow the API calls to get the activation code (or QR)
The Refresh Catalog process allows partners to synchronize their local product catalog with the latest offerings available from 1GLOBAL Connect. This ensures that partners always have access to the most up-to-date product information for ordering.
We recomend to Refresh Catalog once a day to have the latest offerings.
To update the catalog, use the following API:
The Quick Activation process allows partners to provision a new eSIM using pre-fetched catalog information. This method is faster and more efficient than the standard Activation flow, as it doesn't require real-time catalog updates during the activation process.
An order can be placed for a new customer by providing the customer’s information or using the Subscriber ID.
To perform a Quick Activation, use the following API calls:
By using Quick Activation, partners can significantly reduce the time required to provision new eSIMs, improving the overall user experience while maintaining up-to-date product information through regular catalog updates.
The TopUP process allows partners to add a new product to an existing customer's eSIM subscription. This feature enables customers to enhance their service without the need for a new eSIM provisioning.
To perform a TopUP, use the following API calls:
As part of the API onboarding process, we require you to provide the URL of your webhook endpoint and credentials for Basic Authentication (optional), where all events will be delivered to your environment.
Currently, webhook management, including updating endpoints, is handled manually. In the future, we plan to introduce an API that will allow you to easily manage webhook configurations.
To enhance security, we are actively working on implementing additional features alongside basic authentication, such as:
There are several ways to install eSIM on your device.
Method \ Platform | Description | iOS | Android |
---|---|---|---|
QR | Scan QR with | Supported | Supported |
Link | Click on link (web, browser, email) | Supported | NOT Supported |
App | Installation initiated from an APP | Supported (Via LINK) |
Supported (Adittional configuration required) |
The eSIM QR code is a crucial element for activating eSIM profiles on compatible devices. This QR code is provided in two key locations within our API:
Retrieve an Order: When you fetch the details of an order using the order retrieval endpoint, the response includes the QR code link for the associated eSIM.
Order Completed Webhook: Upon successful completion of an order, the Order Completed webhook notification also contains the QR code link.
In both cases, you can find the QR code link in the response structure under the qrcode
field.
Example: In the Order Completed event the QR Code link located in: Event --> Data --> Order --> _embedded --> _links --> qrcode
Starting from iOS 17.5 an eSIM profile can be installed via link.
The link should be prepared as follows:
https://esimsetup.apple.com/esim_qrcode_provisioning?carddata=LPA:1$rsp.truphone.com$MATCHING_ID
MATCHING_ID
can be obtained in Retrieve an Orde or Order Completed Webhook or from Subscription
To enable eSIM Profile installation and APN management, please contact 1Global with information of your application: Application Hash.
What capabilities can be provided to an App that are linked with eSIM profile using Application Hash?
This information should be delivered to 1GLOBAL during onboarding process.
Example:
Certificate: example
Application package name: ie com.COMPANY.COMPANY
Fingerprints:
sha1 - 52:F3:08:E2:.........
sha256 - 9C:9B:E0:71:........
Useful links:
On Android platform APN should be configured by the application. This allows instant access without manual actions from the user.
Documentation: https://developer.android.com/reference/android/telephony/CarrierConfigManager
To get Carrier Privileges, an eSIM must be in enabled state on the device.
Android permission manifest example:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.mod" />
<uses-permission
android:name="android.permission.WRITE_APN_SETTINGS"
tools:ignore="ProtectedPermissions"/>
APN settings values:
public static ContentValues getDefaultAPN() {
ContentValues values = new ContentValues();
values.put(Telephony.Carriers.NAME, "1GLOBAL");
values.put(Telephony.Carriers.APN, "truphone.com");
values.put("user_visible", "1");
values.put(Telephony.Carriers.MMSC, http://mmsc.truphone.com:1981/mm1);
values.put(Telephony.Carriers.MMSPORT, "1981");
values.put(Telephony.Carriers.NUMERIC, "20408");
values.put(Telephony.Carriers.MCC, "204");
values.put(Telephony.Carriers.MVNO_MATCH_DATA, "20408x");
values.put(Telephony.Carriers.TYPE, "default,supl,dun,mms");
values.put(Telephony.Carriers.MVNO_TYPE, "imsi");
return values;
}
ICCID’s from 1Global always start with:
ICCIDS = "894450,894447";
TelephonyManager tl = (TelephonyManager) getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
SubscriptionManager subMangager = (SubscriptionManager) getApplicationContext().getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
int subId = -1;
for (SubscriptionInfo inf : subMangager.getActiveSubscriptionInfoList()) {
if (IccidChecker.isA1GlobalIccid(inf.getIccId())) {
subId = inf.getSubscriptionId();
break;
}
}
SetupApnDevice 1GlobalApnCreator = new SetupApnDevice(getApplicationContext(),subId);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && subId!=-1) {
tl=tl.createForSubscriptionId(subId);
}
try {
ConnectivityManager cm =
(ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
activeNetwork.isConnected();
1GlobalApnCreator.execute(tl.getSubscriberId().substring(0, 5),String.valueOf(isConnected));
}catch (Exception e){
ApnException.response();
}
class:
protected String doInBackground(String... params) {
String response;
this.numeric=params[0];
boolean isConnected= Boolean.parseBoolean(params[1]);
try {
1GlobalApnDevice 1GlobalApnDevice = new 1GlobalApnDevice(context);
1GlobalApnDevice.setNumeric(this.numeric);
1GlobalApnDevice.setSubId(this.subId);
if(isConnected) {
1GlobalApnDevice.execute();
}else{
1GlobalApnDevice.executeForce();
}
PreferredApnDevice preferredApnDevice = new PreferredApnDevice(context, 1GlobalApnDevice.getId());
preferredApnDevice.setNumeric(this.numeric);
preferredApnDevice.execute();
response = MessageDisplay.OK.toString();
}catch(Exception ex){
DeviceContent.getContent().setMessage(MessageDescription.CARRIER_PRIVILEGES.getKey());
response = MessageDisplay.NOK.toString();
}
return response;
}
class
public class PreferredApnDevice implements Apn {
private Uri PREFERRED_APN_URI = Uri.parse("content://telephony/carriers/preferapn");
private ProviderAccess currentApnDevice;
private int id;
private String numeric;
public PreferredApnDevice(Context context, int id, int subId) {
this.id = id;
currentApnDevice = new CurrentApnDevice(Uri.withAppendedPath(PREFERRED_APN_URI, "subId/" + String.valueOf(subId)), context);
}
public PreferredApnDevice(Context context, int id) {
this.id = id;
currentApnDevice = new CurrentApnDevice(PREFERRED_APN_URI, context);
}
@Override
public void execute() {
currentApnDevice.update(getContentValues(),null,null);
}
@Override
public ContentValues getContentValues() {
ContentValues contentValues = new ContentValues();
contentValues.put(ApnUtils.APN_ID.getName(),String.valueOf(id));
return contentValues;
}
public void setNumeric(String numeric) {
this.numeric=numeric;
}
}
public class 1GlobalApnDevice implements Apn {
private CurrentApnDevice currentApnDevice;
private String numeric;
private int subId;
public 1GlobalApnDevice(Context context){
currentApnDevice = new CurrentApnDevice(Telephony.Carriers.CONTENT_URI, context);
}
public int getId() {
return currentApnDevice.getId();
}
public String getNumeric() {
return numeric;
}
public void setNumeric(String numeric) {
this.numeric = numeric;
}
@Override
public void execute() {
if(getId() == 0){
currentApnDevice.insert(getContentValues());
}else{
currentApnDevice.update(getContentValues(), currentApnDevice.getQuery(), currentApnDevice.getSelectionArgs());
}
}
@Override
public ContentValues getContentValues() {
ContentValues contentValues = new ContentValues();
contentValues.put(ApnUtils.APN_NAME.getName(), ApnUtils.APN_NAME.getValue());
contentValues.put(ApnUtils.APN.getName(), ApnUtils.APN.getValue());
contentValues.put(ApnUtils.APN_NUMERIC.getName(), numeric);
contentValues.put(ApnUtils.APN_MCC.getName(), numeric.substring(0,3));
contentValues.put(ApnUtils.APN_MNC.getName(), numeric.substring(3));
contentValues.put(ApnUtils.APN_MVNO_TYPE.getName(), ApnUtils.APN_MVNO_TYPE.getValue());
contentValues.put(ApnUtils.APN_CURRENT.getName(), ApnUtils.APN_CURRENT.getValue());
contentValues.put(ApnUtils.APN_MVNO_DATA.getName(), numeric + ApnUtils.APN_MVNO_DATA.getValue());
contentValues.put(ApnUtils.APN_TYPE.getName(), ApnUtils.APN_TYPE.getValue());
contentValues.put(ApnUtils.APN_MMSC.getName(), ApnUtils.APN_MMSC.getValue());
contentValues.put(ApnUtils.APN_MMSC_PORT.getName(), ApnUtils.APN_MMSC_PORT.getValue());
contentValues.put(ApnUtils.APN_SUBID.getName(),subId);
return contentValues;
}
public void setSubId(int subId) {
this.subId = subId;
}
public int getSubId() {
return subId;
}
public void executeForce() {
if(getId() == 0){
currentApnDevice.insert(getContentValues());
}else{
currentApnDevice.delete(currentApnDevice.getQuery(), currentApnDevice.getSelectionArgs());
currentApnDevice.insert(getContentValues());
}
}
}
public class CurrentApnDevice extends ProviderAccess {
private ApnAttributes apnCreateClause;
private String[] selectionArgs;
private String query;
public CurrentApnDevice(Uri uri, Context context) {
super(uri, context.getContentResolver());
apnCreateClause = new ApnAttributes(ApnUtils.APN.getValue(), ApnUtils.APN_NAME.getValue());
selectionArgs = apnCreateClause.getSelectionArgs();
query = apnCreateClause.toString();
}
public void log(){
logAPN(query,selectionArgs);
}
public int getId() {
return select(query, selectionArgs);
}
public String[] getSelectionArgs() {
return selectionArgs;
}
public void setSelectionArgs(String[] selectionArgs) {
this.selectionArgs = selectionArgs;
}
public String getQuery() {
return query;
}
public void setQuery(String query) {
this.query = query;
}
}
package com.1Global.1GlobalApp.contentresolver;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.util.Log;
public abstract class ProviderAccess {
protected Uri uri;
protected ContentResolver contentResolver;
public ProviderAccess(Uri uri, ContentResolver contentResolver){
this.uri = uri;
this.contentResolver = contentResolver;
}
public int select(String query, String[] arguments) {
Cursor c = contentResolver.query(uri, null, query, arguments, null);
int value = 0;
if(c.moveToFirst()){
value = c.getShort(0);
}
c.close();
return value;
}
public void insert(ContentValues contentValues){
try{
contentResolver.insert(uri,contentValues);
}catch(Exception ex){
Log.d(ProviderAccess.class.getName(), "insert APN: " + ex.getMessage());
}
}
public int update(ContentValues contentValues, String query, String[] arguments){
try {
int apnid= contentResolver.update(uri, contentValues, query, arguments);
return apnid;
}catch(Exception ex){
Log.d(ProviderAccess.class.getName(), "update APN: " + ex.getMessage());
return -1;
}
}
public void delete(String query, String[] arguments){
contentResolver.delete(uri, query, arguments);
}
}
This webhook is triggered when a product balance threshold is reached.
Product balance threshold event schema
id required | string (EventId) <= 100 characters A string that uniquely identifies an Event |
type required | string Value: "balance.threshold.exceeded" The type of notification |
created_at required | string <date-time> (Iso8601DateTime) The Date Time format according to the ISO 8601 |
required | object |
{- "id": "evt_01J494G6WZAR2E2808Z8M07K4Z",
- "type": "balance.threshold.exceeded",
- "created_at": "2021-02-01T14:28:17.967Z",
- "data": {
- "threshold": {
- "type": "data",
- "percentage": 80
}, - "product": {
- "id": "prd_01J806F9TNFYTQM3Z4THPTJEVY",
- "status": "active",
- "created_at": "2024-09-17T14:34:06.037Z",
- "started_at": "2024-09-17T14:35:31.559Z",
- "expire_at": "2025-09-17T14:34:03.946Z",
- "end_at": "2024-10-17T14:35:31.559Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01J7ZWQW25H38MHADHDQ21H28W",
- "name": "Local Germany 1Month 500MB",
- "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "megabytes",
- "unit_count": 500,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J7ZWQVSNTKXMEZ77GS81ZG2T",
- "name": "Germany",
- "type": "local",
- "created_at": "2024-09-17T11:44:00.818Z",
- "updated_at": "2024-09-17T11:44:00.818Z",
- "countries": [
- "DE"
], - "_links": {
}
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": "data",
- "unit": "bytes",
- "initial": 524288000,
- "remaining": 123000,
- "spent": 524165000
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 0,
- "currency": "EUR"
}
]
}, - "_links": {
- "subscription": {
}
}
}
}
}
This webhook is triggered when a product is depleted.
Product depleted event notification payload
id required | string (EventId) <= 100 characters A string that uniquely identifies an Event |
type required | string Value: "product.depleted" The type of notification |
created_at required | string <date-time> (Iso8601DateTime) The Date Time format according to the ISO 8601 |
required | object |
{- "id": "evt_01J494G6WZAR2E2808Z8M07K4Z",
- "type": "product.depleted",
- "created_at": "2021-02-01T14:28:17.967Z",
- "data": {
- "product": {
- "id": "prd_01J494WK30DVCMB6ZPYWN21APK",
- "status": "depleted",
- "created_at": "2023-05-06T16:59:17.000Z",
- "start_at": "2023-05-06T16:59:20.000Z",
- "started_at": "2023-05-06T16:59:17.967Z",
- "expire_at": "2023-10-21T14:28:17.967Z",
- "end_at": "2023-06-07T16:52:17.967Z",
- "ended_at": "2023-05-10T16:52:17.967Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01HW386JNMYHY5G9VXPNK49ABS",
- "name": "Local Macedonia - 15 Days - 70 GB",
- "validity": {
- "type": "duration",
- "unit": "day",
- "unit_count": 15,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "bytes",
- "unit_count": 70,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J7ZWQVSNTKXMEZ77GS81ZG2T",
- "name": "Macedonia",
- "type": "local",
- "created_at": "2024-09-17T11:44:00.818Z",
- "updated_at": "2024-10-10T11:44:00.000Z",
- "countries": [
- "DE"
], - "_links": {
}
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": null,
- "unit": "bytes",
- "initial": 524288000,
- "remaining": 0,
- "spent": 524288000
}
], - "prices": [
- {
- "type": "recurring",
- "unit_amount": 19,
- "recurrence": {
- "unit": "week",
- "unit_count": 1
}, - "currency": "EUR"
}
]
}, - "_links": {
- "order": {
}, - "subscription": {
}
}
}
}
}
This webhook is triggered when a product is terminated.
Product terminated notification payload
id required | string (EventId) <= 100 characters A string that uniquely identifies an Event |
type required | string Value: "product.terminated" The type of notification |
created_at required | string <date-time> (Iso8601DateTime) The Date Time format according to the ISO 8601 |
required | object |
{- "id": "evt_01J494G6WZAR2E2808Z8M07K4Z",
- "type": "product.terminated",
- "created_at": "2021-02-01T14:28:17.967Z",
- "data": {
- "product": {
- "id": "prd_01J494WK30DVCMB6ZPYWN21APK",
- "status": "terminated",
- "created_at": "2024-08-02T08:56:46.944Z",
- "started_at": "2023-05-06T16:59:17.967Z",
- "start_at": "2023-05-06T16:59:17.967Z",
- "end_at": "2023-05-07T16:52:17.967Z",
- "ended_at": "2023-05-07T16:52:17.967Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01HW386JNMYHY5G9VXPNK49ABS",
- "name": "Local Macedonia - 15 Days - 70 GB",
- "validity": {
- "type": "duration",
- "unit": "day",
- "unit_count": 15,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "bytes",
- "unit_count": 70,
- "_embedded": null,
- "coverage_area": {
- "id": "cov_01J7ZWQVSNTKXMEZ77GS81ZG2T",
- "name": "Macedonia",
- "type": "local",
- "created_at": "2024-09-17T11:44:00.818Z",
- "updated_at": "2024-10-10T11:44:00.000Z",
- "countries": [
- "DE"
], - "_links": {
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": null,
- "unit": "bytes",
- "initial": 524288000,
- "remaining": 123000,
- "spent": 524165000
}
], - "prices": [
- {
- "type": "recurring",
- "unit_amount": 50,
- "recurrence": {
- "unit": "month",
- "unit_count": 1
}, - "currency": "EUR"
}
]
}, - "_links": {
- "subscription": {
}
}
}
}
}
This webhook is triggered when a profile is installed.
Subscription profile event payload
id required | string (EventId) <= 100 characters A string that uniquely identifies an Event |
type required | string Value: "subscription.sim_profile.installed" The type of notification |
created_at required | string <date-time> (Iso8601DateTime) The Date Time format according to the ISO 8601 |
required | object |
{- "id": "evt_01J494G6WZAR2E2808Z8M07K4Z",
- "type": "subscription.sim_profile.installed",
- "created_at": "2021-02-01T14:28:17.967Z",
- "data": {
- "subscription": {
- "id": "subs_01J3YVZN6DGMG6BWYJ8QY8NZ1H",
- "status": "active",
- "created_at": "2024-07-29T09:08:45.901Z",
- "updated_at": "2024-07-29T09:08:45.984Z",
- "_embedded": {
- "sim_profile": {
- "sim_type": "esim",
- "profile_status": "Installed",
- "matching_id": "BR-24GGSR-11KEFFV",
- "smdp_address": "rsp.truphone.com",
- "iccid": "8999999999990238017",
- "_embedded": {
- "device": {
- "uicc": {
- "eid": "89049032004008882600018948798950"
}
}
}
}
}, - "_links": {
- "qr-code": {
}, - "products": {
},
}
}
}
}
This webhook is triggered when a profile is deleted.
Subscription profile event payload
id required | string (EventId) <= 100 characters A string that uniquely identifies an Event |
type required | string Value: "subscription.sim_profile.deleted" The type of notification |
created_at required | string <date-time> (Iso8601DateTime) The Date Time format according to the ISO 8601 |
required | object |
{- "id": "evt_01J494G6WZAR2E2808Z8M07K4Z",
- "type": "subscription.sim_profile.deleted",
- "created_at": "2021-02-01T14:28:17.967Z",
- "data": {
- "subscription": {
- "id": "subs_01J3YVZN6DGMG6BWYJ8QY8NZ1H",
- "status": "terminated",
- "created_at": "2024-07-29T09:08:45.901Z",
- "updated_at": "2024-07-29T09:08:45.984Z",
- "_embedded": {
- "sim_profile": {
- "sim_type": "esim",
- "profile_status": "Deleted",
- "matching_id": "BR-24GGSR-11KEFFV",
- "smdp_address": "rsp.truphone.com",
- "iccid": "8999999999990238017",
- "_embedded": {
- "device": {
- "uicc": {
- "eid": "89049032004008882600018948798950"
}
}
}
}
}, - "_links": {
- "qr-code": {
}, - "products": {
},
}
}
}
}
This webhook is triggered when an order is completed.
Order completed notification payload
id required | string (EventId) <= 100 characters A string that uniquely identifies an Event |
type required | string Value: "order.completed" The type of notification |
created_at required | string <date-time> (Iso8601DateTime) The Date Time format according to the ISO 8601 |
required | object |
{- "id": "evt_01J494G6WZAR2E2808Z8M07K4Z",
- "type": "order.completed",
- "created_at": "2024-08-08T14:28:17.967Z",
- "data": {
- "order": {
- "id": "ord_01HV3KWPNRCT870WV3XG41CAT3",
- "status": "completed",
- "type": "activate_subscription",
- "created_at": "2024-08-02T09:13:28.384Z",
- "updated_at": "2024-08-02T09:13:40.544Z",
- "completed_at": "2024-08-02T09:15:30.544Z",
- "_embedded": {
- "subscription": {
- "id": "subs_01HRCZZWCBXR40JQ6B705952WJ",
- "status": "active",
- "created_at": "2024-07-11T10:29:42.426Z",
- "updated_at": "2024-07-11T10:29:42.426Z",
- "_embedded": {
- "sim_profile": {
- "iccid": "89882112345678900000",
- "sim_type": "esim",
- "profile_status": "Released",
- "matching_id": "5C-ZYXZZ-1R54O94",
- "smdp_address": "rsp.truphone.com",
- "_embedded": {
- "device": {
- "uicc": {
- "eid": "89049032007208882600182092769530"
}
}
}
}
}, - "_links": {
- "qrcode": {
}
}
}
}, - "_links": {
}
}
}
}
This webhook is triggered when an order has failed.
Order failed notification payload
id required | string (EventId) <= 100 characters A string that uniquely identifies an Event |
type required | string Value: "order.failed" The type of notification |
created_at required | string <date-time> (Iso8601DateTime) The Date Time format according to the ISO 8601 |
required | object |
{- "id": "evt_01J494G6WZAR2E2808Z8M07K4Z",
- "type": "order.failed",
- "created_at": "2024-08-08T14:28:17.967Z",
- "data": {
- "order": {
- "id": "ord_01HV3KWPNRCT870WV3XG41CAT3",
- "status": "failed",
- "type": "activate_subscription",
- "created_at": "2024-08-02T09:13:28.384Z",
- "updated_at": "2024-08-02T09:13:40.544Z",
- "completed_at": "2024-08-02T09:15:30.544Z",
- "_embedded": {
- "subscription": {
- "id": "subs_01HRCZZWCBXR40JQ6B705952WJ",
- "status": "active",
- "created_at": "2024-07-11T10:29:42.426Z",
- "updated_at": "2024-07-11T10:29:42.426Z",
- "_embedded": {
- "sim_profile": {
- "iccid": "89882112345678900000",
- "sim_type": "esim",
- "profile_status": "Released",
- "matching_id": "5C-ZYXZZ-1R54O94",
- "smdp_address": "rsp.truphone.com",
- "_embedded": {
- "device": {
- "uicc": {
- "eid": "89049032007208882600182092769530"
}
}
}
}
}, - "_links": {
- "qrcode": {
}
}
}
}, - "_links": {
}
}
}
}
Creates a new order for a subscriber.
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
type required | string (OrderType) Enum: "activate_subscription" "topup_subscription" The Order type |
required | object (CreateOrUpdateSubscriber) The Subscriber information |
purchase_location required | string (Country) Enum: "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KP" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "XK" "YE" "YT" "ZA" "ZM" "ZW" The supported country codes according to ISO 3166-1 alpha-2 |
required | object |
object (Device) The Device where the SIM Profile is installed | |
required | Array of objects (OrderProducts) <= 15 items The products to buy with this order. Note that the total number of products to be in use (active + pending_first_usage + scheduled + current order) must not exceed 15. This validation is enforced on server-side. |
{- "type": "activate_subscription",
- "subscriber": {
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@doe.com",
- "address": {
- "country": "US",
- "state": "AL",
- "postal_code": "25314"
}
}, - "purchase_location": "US",
- "sim_profile": {
- "sim_type": "esim"
}, - "products": [
- {
- "activation_mode": "first_usage",
- "product_offering_id": "prdoff_01HRD00B0K1EPRZ91XEFRYPPTVX"
}
]
}
{- "id": "ord_01HV3KWPNRCT870WV3XG41UTG4",
- "status": "created",
- "type": "activate_subscription",
- "created_at": "2024-08-02T09:13:28.384Z",
- "_links": {
}
}
Returns a list of orders
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
status | string (OrderStatus) Enum: "accepted" "fulfilling" "completed" "failed" Example: status=completed The Order status |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "orders": [
- {
- "id": "ord_01HV3KWPNRCT870WV3XG41CAT3",
- "status": "completed",
- "type": "activate_subscription",
- "created_at": "2024-08-02T09:13:28.384Z",
- "updated_at": "2024-08-02T09:15:30.544Z",
- "completed_at": "2024-08-02T09:20:30.000Z",
- "_links": {
}
}, - {
- "id": "ord_01HV3KWPNRCT870WV3XG41UTG4",
- "status": "failed",
- "type": "topup_subscription",
- "created_at": "2024-08-02T09:13:28.384Z",
- "updated_at": "2024-08-02T09:18:30.544Z",
- "_links": {
}
}
]
}, - "_links": {
}
}
Retrieves the details of an existing order
order-id required | string (OrderId) <= 100 characters Example: ord_01HV3KWPNRCT870WV3XG41CAT3 The resource identifier. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "ord_01HV3KWPNRCT870WV3XG41CAT3",
- "status": "completed",
- "type": "topup_subscription",
- "created_at": "2024-08-02T09:13:28.384Z",
- "updated_at": "2024-08-02T09:13:30.544Z",
- "completed_at": "2024-08-02T09:13:35.122Z",
- "_embedded": {
- "subscription": {
- "id": "subs_01HRCZZWCBXR40JQ6B705952WJ",
- "status": "active",
- "created_at": "2024-07-11T10:29:42.426Z",
- "_embedded": {
- "sim_profile": {
- "iccid": "89882112345678900000",
- "sim_type": "esim",
- "profile_status": "Installed",
- "matching_id": "5C-ZYXZZ-1R54O94",
- "smdp_address": "rsp.truphone.com",
- "_embedded": {
- "device": {
- "uicc": {
- "eid": "89049032007208882600182092769530"
}
}
}
}
}, - "_links": {
- "qrcode": {
}
}
}
}, - "_links": {
}
}
Returns a list of product catalogs
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
name | string The product catalog name |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "product_catalogs": [
- {
- "id": "prdcat_92BX5ZZKBKGCTAV9WEVGEMMVRY",
- "name": "Generic Product Catalog",
- "created_at": "2021-03-01T14:28:17.967Z",
- "updated_at": "2022-03-01T16:23:10.445Z",
- "_links": {
- "self": {
}, - "product_offerings": {
}
}
}
]
}, - "_links": {
}
}
Retrieves the details of a product catalog
product-catalog-id required | string (ProductCatalogId) <= 100 characters Example: prdcat_01BX5ZZKBKACTAV9WEVGEMMVRY An identifier of the product catalog. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "prdcat_01BX5ZZKBKACTAV9WEVGEMMVRY",
- "name": "Global Product Catalog",
- "created_at": "2021-02-01T14:28:17.967Z",
- "updated_at": "2022-02-05T08:23:14.345Z",
- "_links": {
- "self": {
}, - "product_offerings": {
}
}
}
Returns a list of product offerings from a specific product catalog
product-catalog-id required | string (ProductCatalogId) <= 100 characters Example: prdcat_01BX5ZZKBKACTAV9WEVGEMMVRY An identifier of the product catalog. |
status | string (ProductOfferingStatus) Enum: "active" "inactive" The Product Offering status |
allowances[coverage-area][countries] | string (AllowancesCountries) Example: allowances[coverage-area][countries]=GB,FR The Allowance Countries. |
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "product-offerings": [
- {
- "id": "prdoff_01J83E2WMQBDBEK70SX0N5RJ1P",
- "name": "Local Portugal - 1 Day",
- "created_at": "2024-09-18T20:44:51.223Z",
- "updated_at": "2024-09-18T21:50:51.233Z",
- "status": "active",
- "availability": {
- "start_at": "2024-09-18T19:59:56.000Z",
- "end_at": "2025-09-18T19:59:56.000Z"
}, - "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "gigabytes",
- "unit_count": 100,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J83E2VNKR4GD78MF1R43YWTK",
- "name": "Portugal",
- "type": "local",
- "created_at": "2024-09-18T20:44:50.227Z",
- "updated_at": "2024-09-18T20:44:50.227Z",
- "countries": [
- "PT"
], - "_links": {
}
}
}
}
], - "prices": [
- {
- "type": "recurring",
- "unit_amount": 50,
- "currency": "EUR",
- "recurrence": {
- "unit": "month",
- "unit_count": 3
}
}
]
}, - "_links": {
}
}, - {
- "id": "prdoff_01J83E2WMQBDBEK70SX0N5R4GL",
- "name": "Local Spain - 1 Day",
- "created_at": "2024-09-18T20:44:51.223Z",
- "updated_at": "2024-09-24T08:00:34.123Z",
- "status": "active",
- "availability": {
- "start_at": "2024-09-18T19:59:56.000Z",
- "end_at": "2025-09-18T19:59:56.000Z"
}, - "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "gigabytes",
- "unit_count": 80,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J83E2VNKR4GD78MF1R43YIW3",
- "name": "Spain",
- "type": "local",
- "created_at": "2024-01-14T20:44:50.098Z",
- "countries": [
- "ES"
], - "_links": {
}
}
}
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 100,
- "currency": "EUR"
}
]
}, - "_links": {
}
}
]
}, - "_links": {
}
}
Product Offerings are blueprints for Products. You can access your Product Offerings via a single request. Lists all product offerings endpoint will show you the complete list of products and their respective Ids, which can be used in an order to activate/topup eSIM profiles.
Returns a list of product offerings
status | string (ProductOfferingStatus) Enum: "active" "inactive" The Product Offering status |
allowances[coverage-area][countries] | string (AllowancesCountries) Example: allowances[coverage-area][countries]=GB,FR The Allowance Countries. |
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "product-offerings": [
- {
- "id": "prdoff_01J83E2WMQBDBEK70SX0N5RJ1P",
- "name": "Local Portugal - 1 Day",
- "created_at": "2024-09-18T20:44:51.223Z",
- "updated_at": "2024-09-18T21:50:51.233Z",
- "status": "active",
- "availability": {
- "start_at": "2024-09-18T19:59:56.000Z",
- "end_at": "2025-09-18T19:59:56.000Z"
}, - "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "gigabytes",
- "unit_count": 100,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J83E2VNKR4GD78MF1R43YWTK",
- "name": "Portugal",
- "type": "local",
- "created_at": "2024-09-18T20:44:50.227Z",
- "updated_at": "2024-09-18T20:44:50.227Z",
- "countries": [
- "PT"
], - "_links": {
}
}
}
}
], - "prices": [
- {
- "type": "recurring",
- "unit_amount": 50,
- "currency": "EUR",
- "recurrence": {
- "unit": "month",
- "unit_count": 3
}
}
]
}, - "_links": {
}
}, - {
- "id": "prdoff_01J83E2WMQBDBEK70SX0N5R4GL",
- "name": "Local Spain - 1 Day",
- "created_at": "2024-09-18T20:44:51.223Z",
- "updated_at": "2024-09-24T08:00:34.123Z",
- "status": "active",
- "availability": {
- "start_at": "2024-09-18T19:59:56.000Z",
- "end_at": "2025-09-18T19:59:56.000Z"
}, - "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "gigabytes",
- "unit_count": 80,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J83E2VNKR4GD78MF1R43YIW3",
- "name": "Spain",
- "type": "local",
- "created_at": "2024-01-14T20:44:50.098Z",
- "countries": [
- "ES"
], - "_links": {
}
}
}
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 100,
- "currency": "EUR"
}
]
}, - "_links": {
}
}
]
}, - "_links": {
}
}
Retrieves the details of an existing product offering
product-offering-id required | string (ProductOfferingId) <= 100 characters Example: prdoff_01HV483CD6YFTW68D18V23Y8NJ An identifier of the product offering. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "prdoff_01J83E2WMQBDBEK70SX0N5RJ1P",
- "name": "Local Portugal - 1 Day",
- "created_at": "2024-09-18T20:44:51.223Z",
- "updated_at": "2024-09-18T21:34:02.456Z",
- "status": "active",
- "availability": {
- "start_at": "2024-09-18T19:59:56.000Z",
- "end_at": "2025-09-18T19:59:56.000Z"
}, - "validity": {
- "type": "duration",
- "unit": "day",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "gigabytes",
- "unit_count": 70,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J83E2VNKR4GD78MF1R43YWTK",
- "name": "Portugal",
- "type": "local",
- "created_at": "2024-09-18T20:44:50.227Z",
- "updated_at": "2024-09-18T21:23:10.000Z",
- "countries": [
- "PT"
], - "_links": {
}
}
}
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 100,
- "currency": "EUR"
}
]
}, - "_links": {
}
}
Returns a list of coverage areas
countries | Array of strings (Country) Items Enum: "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KP" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "XK" "YE" "YT" "ZA" "ZM" "ZW" Countries filter. |
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "coverage_areas": [
- {
- "id": "cov_01J83E2VNKR4GD78MF1R43YWTK",
- "name": "Portugal",
- "type": "local",
- "created_at": "2024-09-18T20:44:50.227Z",
- "updated_at": "2024-09-20T12:42:12.987Z",
- "countries": [
- "PT"
], - "_links": {
}
}, - {
- "id": "cov_01J83E2VNKR4GD78MF1R43YIW3",
- "name": "Spain",
- "type": "local",
- "created_at": "2024-01-14T20:44:50.098Z",
- "updated_at": "2024-04-23T01:23:10.234Z",
- "countries": [
- "ES"
], - "_links": {
}
}
]
}, - "_links": {
}
}
Retrieves the details of an existing coverage area.
coverage-area-id required | string (CoverageAreaId) <= 100 characters Example: cov_01BX5ZZKBKACTAV9WEVGEMMVRY An identifier of the coverage area. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "cov_01BX5ZZKBKACTAV9WEVGEMMVRY",
- "name": "Local pt",
- "type": "local",
- "created_at": "2024-02-01T14:28:17.967Z",
- "updated_at": "2024-03-01T15:28:00.127Z",
- "countries": [
- "PT"
], - "_links": {
}
}
A Product is an instance of the Product Offering that has been ordered & provisioned. Products are created by placing a new Order and always have a Product Offering.
Returns a list of products
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
status | string (ProductStatus) Enum: "active" "scheduled" "pending_first_usage" "expired" "terminated" "depleted" "canceled" The product status |
subscription-id | string (SubscriptionId) <= 100 characters Example: subscription-id=subs_01J9XJ11WTYFWFH5JD2YM1S18S A string that uniquely identifies a Subscription |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "products": [
- {
- "id": "prd_01J7ZWP2Q7C2VJRAPW5D62GQEH",
- "status": "active",
- "created_at": "2024-09-17T11:43:02.375Z",
- "start_at": "2024-09-17T11:43:03.579Z",
- "started_at": "2024-09-17T11:43:03.475Z",
- "end_at": "2024-10-17T11:43:03.579Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01J7ZWNYNYVJYKWGJR98FA3NZS",
- "name": "Local Germany 1 Month 500 MB",
- "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "megabytes",
- "unit_count": 500,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J7ZWNXBNSHG0Q0RWERPP5QDW",
- "name": "Germany",
- "type": "local",
- "created_at": "2024-09-17T11:42:56.875Z",
- "updated_at": "2024-09-17T14:45:03.234Z",
- "countries": [
- "DE"
], - "_links": {
}
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": "data",
- "unit": "bytes",
- "initial": 524288000,
- "remaining": 512154000,
- "spent": 12134000
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 1,
- "currency": "EUR"
}
]
}, - "_links": {
- "subscription": {
}, - "cancel": {
}
}
}, - {
- "id": "prd_01J82FWNGE033C2DEMCRPY1427",
- "status": "canceled",
- "created_at": "2024-09-18T11:57:10.029Z",
- "expire_at": "2025-09-18T11:57:08.570Z",
- "ended_at": "2024-09-25T12:10:40.218Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01J8091PFJ4XWGXW5VN6T6JV3A",
- "name": "Local Zimbabwe - 7 Days",
- "validity": {
- "type": "duration",
- "unit": "day",
- "unit_count": 7,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "gigabytes",
- "unit_count": 1,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J8091P6TD2DT8R1VYEADGXSJ",
- "name": "Zimbabwe",
- "type": "local",
- "created_at": "2024-09-17T15:19:05.690Z",
- "updated_at": "2024-09-17T14:45:03.234Z",
- "countries": [
- "ZW"
], - "_links": {
}
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": "data",
- "unit": "bytes",
- "initial": 1073741824,
- "remaining": 1073741824,
- "spent": 0
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 1,
- "currency": "USD"
}
]
}, - "_links": {
- "subscription": {
}
}
}
]
}, - "_links": {
}
}
Retrieves the details of an existing product
product-id required | string (ProductId) <= 100 characters Example: prd_01BX5ZZKBKACTAV9WEVGEMMVRY An identifier of the product. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "prd_01J7ZWP2Q7C2VJRAPW5D62GQEH",
- "status": "active",
- "created_at": "2024-09-17T11:43:02.023",
- "start_at": "2024-09-17T11:43:03.579Z",
- "started_at": "2024-09-17T11:43:04.375Z",
- "end_at": "2024-10-17T11:43:01.579Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01J7ZWNYNYVJYKWGJR98FA3NZS",
- "name": "Local Germany 1 Month 500 MB",
- "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "megabytes",
- "unit_count": 500,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J7ZWNXBNSHG0Q0RWERPP5QDW",
- "name": "Germany",
- "type": "local",
- "created_at": "2024-09-17T11:42:56.875Z",
- "updated_at": "2024-09-17T14:45:03.234Z",
- "countries": [
- "DE"
], - "_links": {
}
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": "data",
- "unit": "bytes",
- "initial": 524288000,
- "remaining": 512154000,
- "spent": 12134000
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 1,
- "currency": "EUR"
}
]
}, - "_links": {
- "subscription": {
}, - "cancel": {
}
}
}
Activates a product. Only products in status scheduled or pending first usage can be activated.
product-id required | string (ProductId) <= 100 characters Example: prd_01BX5ZZKBKACTAV9WEVGEMMVRY An identifier of the product. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "prd_01J7ZWP2Q7C2VJRAPW5D62GQEH",
- "status": "active",
- "created_at": "2024-09-17T11:43:02.023",
- "start_at": "2024-09-17T11:43:03.579Z",
- "started_at": "2024-09-17T11:43:04.375Z",
- "end_at": "2024-10-17T11:43:01.579Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01J7ZWNYNYVJYKWGJR98FA3NZS",
- "name": "Local Germany 1 Month 500 MB",
- "validity": {
- "type": "duration",
- "unit": "month",
- "unit_count": 1,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "megabytes",
- "unit_count": 500,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J7ZWNXBNSHG0Q0RWERPP5QDW",
- "name": "Germany",
- "type": "local",
- "created_at": "2024-09-17T11:42:56.875Z",
- "updated_at": "2024-09-17T14:45:03.234Z",
- "countries": [
- "DE"
], - "_links": {
}
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": "data",
- "unit": "bytes",
- "initial": 524288000,
- "remaining": 512154000,
- "spent": 12134000
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 1,
- "currency": "EUR"
}
]
}, - "_links": {
- "subscription": {
}, - "cancel": {
}
}
}
Cancels a product. Only products in status active, scheduled or pending first usage can be canceled.
product-id required | string (ProductId) <= 100 characters Example: prd_01BX5ZZKBKACTAV9WEVGEMMVRY An identifier of the product. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "prd_01J82FWNGE033C2DEMCRPY1427",
- "status": "canceled",
- "created_at": "2024-09-18T11:57:10.029Z",
- "expire_at": "2025-09-18T11:57:08.570Z",
- "ended_at": "2024-09-19T12:10:40.218Z",
- "_embedded": {
- "product_offering": {
- "id": "prdoff_01J8091PFJ4XWGXW5VN6T6JV3A",
- "name": "Local Zimbabwe - 7 Days",
- "validity": {
- "type": "duration",
- "unit": "day",
- "unit_count": 7,
- "is_recurrent": false
}, - "_embedded": {
- "allowances": [
- {
- "type": "data",
- "unit": "gigabytes",
- "unit_count": 1,
- "_embedded": {
- "coverage_area": {
- "id": "cov_01J8091P6TD2DT8R1VYEADGXSJ",
- "name": "Zimbabwe",
- "type": "local",
- "created_at": "2024-09-17T15:19:05.690Z",
- "updated_at": "2024-09-17T14:45:03.234Z",
- "countries": [
- "ZW"
], - "_links": {
}
}
}
}
]
}, - "_links": {
}
}, - "balances": [
- {
- "allowance_type": "data",
- "unit": "bytes",
- "initial": 1073741824,
- "remaining": 1073741824,
- "spent": 0
}
], - "prices": [
- {
- "type": "one_time",
- "unit_amount": 1,
- "currency": "USD"
}
]
}, - "_links": {
- "subscription": {
}
}
}
Returns a list of subscriptions
subscriber-id | string (SubscriberId) <= 100 characters Example: subscriber-id=subr_01HRC2T6WK4CMVGFXA2RESTQ97 An identifier of the subscriber that owns the subscription. |
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
status | string (SubscriptionStatus) Enum: "active" "terminated" Example: status=active The Subscription's status |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "subscriptions": [
- {
- "id": "subs_01BX5ZZKBKACTAV9WEVGEMMVRY",
- "status": "terminated",
- "created_at": "2023-01-01T00:00:00.100Z",
- "updated_at": "2023-05-21T00:00:00.500Z",
- "_embedded": {
- "sim_profile": {
- "iccid": "8999999999990242084",
- "sim_type": "esim"
}
}, - "_links": {
}
}, - {
- "id": "subs_02BX5ZZKBKACTAV9WEVGEMMVZS",
- "status": "active",
- "created_at": "2022-01-01T00:00:00.100Z",
- "updated_at": "2022-05-21T00:00:00.500Z",
- "_embedded": {
- "sim_profile": {
- "iccid": "8999999999990242084",
- "sim_type": "esim"
}
}, - "_links": {
}
}
]
}, - "_links": {
}
}
Retrieves the details of an existing subscription
subscription-id required | string (SubscriptionId) <= 100 characters Example: subs_01J9XJ11WTYFWFH5JD2YM1S18S A string that uniquely identifies a Subscription |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "subs_01BX5ZZKBKACTAV9WEVGEMMVRY",
- "status": "active",
- "created_at": "2023-01-01T00:00:00.100Z",
- "updated_at": "2023-05-21T00:00:00.500Z",
- "_embedded": {
- "sim_profile": {
- "iccid": "89882112345678901234",
- "sim_type": "esim",
- "profile_status": "released",
- "matching_id": "5C-ZYXZZ-1R54O94",
- "smdp_address": "rsp.truphone.com",
- "_embedded": {
- "device": {
- "uicc": {
- "eid": "89049032004008882600018948798950"
}
}
}
}
}, - "_links": {
- "qr-code": {
}, - "products": {
},
}
}
Returns a list of subscribers
cursor | string (Cursor) A base64 encoded string present in the response links next and previous. |
limit | integer <int32> (Limit) [ 1 .. 40 ] Default: 10 Page size filter. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "_embedded": {
- "subscribers": [
- {
- "id": "subr_01HRC2T6WK4CMVGFXA2RESTQ97",
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-05-21T00:00:00Z",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@dummy.com",
- "address": {
- "country": "US",
- "state": "CA",
- "postal_code": "90001"
}, - "_links": {
- "subscriptions": {
}
}
}, - {
- "id": "subr_02HRC2T6WK4CMVGFXA2RESTQ98",
- "created_at": "2023-02-01T00:00:00Z",
- "updated_at": "2023-06-21T00:00:00Z",
- "first_name": "Maria",
- "last_name": "Silva",
- "email": "maria.silva@dummy.com",
- "address": {
- "country": "PT",
- "postal_code": "1000-001"
}, - "_links": {
- "subscriptions": {
}
}
}
]
}, - "_links": {
}
}
Retrieves the details of an existing subscriber
subscriber-id required | string (SubscriberId) <= 100 characters Example: subr_01HRC2T6WK4CMVGFXA2RESTQ97 An identifier of the subscriber. |
Correlation-Id | string An unique identifier provided by the client that allows the request to be traced through the system. |
{- "id": "subr_01HRC2T6WK4CMVGFXA2RESTQ97",
- "created_at": "2023-01-01T00:00:00Z",
- "updated_at": "2023-05-21T00:00:00Z",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@dummy.com",
- "address": {
- "country": "US",
- "state": "CA",
- "postal_code": "90001"
}, - "_links": {
- "subscriptions": {
}
}
}