openapi-directory
Version:
Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS
1 lines • 50.3 kB
JSON
{"openapi":"3.0.0","info":{"contact":{"x-twitter":"Reloadly"},"description":"Reloadly Mobile top up API enables your apps, websites and any other platforms to send mobile credit top ups to over 4.5 billion phones covering 600+ mobile operators worldwide. \nWe provide a commission for every operator available. First you will need to create your account if you haven’t done so. \nAlso, we suggest you download the Reloadly app to view and play with the user functionalities. This will better help guide you when integrating our APIs.\n\n## GET STARTED\n\n### Authentication & Authorization\n\n-----------------\n\nThe Reloadly APIs are HTTP-based RESTful APIs that use OAuth 2.0 protocol for authorization. API request and response bodies are formatted in JSON.\n\nOAuth is an open standard that many companies use to provide secure access to protected resources.\n\nWhen you create a developer account. Reloadly generates a set of OAuth client ID and secret credentials for your app for both sandbox and live environments. You pass these credentials in the `Authorization` header in the get access token request.\n\nIn exchange for these credentials, the Reloadly authorization server issues access tokens called bearer tokens that you use for authorization when you make REST API requests. A bearer token enables you to complete actions on behalf of, and with the approval of the resource owner.\n\nThe `access_token` field in the get access token response contains a bearer token, indicated by the `token_type` of `Bearer` :\n\n+ Response 200 (application/json)\n\n {\n \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik0wWXpRa\",\n \"scope\": \"<scopes>\",\n \"expires_in\": \"5184000\",\n \"token_type\": \"Bearer\"\n }\n\nInclude this bearer token in API requests in the `Authorization` header with the `Bearer` authentication scheme.\n\nThis sample request uses a bearer token to list topup transactions for an user account :\n\n```curl\ncurl -v -X GET https://topups-sandbox.reloadly.com/transactions?page=1&size=3 \\\n -H \"Accept: application/com.reloadly.topups-v1+json\" \\\n -H \"Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik0wWXpRa\" \\\n```\n\nAccess tokens have a finite lifetime. The `expires_in` field in the <a href=\"#get-access-token-response\">get access token response</a> indicates the lifetime, in seconds, of the access token. \nFor example, an expiry value of 3600 indicates that the access token expires in one hour from the time the response was generated.\n\nTo detect when an access token expires, write code to either :\n\n+ Keep track of the `expires_in` value in the token response. The value is expressed in seconds.\n\n+ Handle the HTTP `401 Unauthorized` status code and the `TOKEN_EXPIRED` error code in the <a href=\"#error-response-message\">error response message</a>. The API endpoint issues this status code when it detects an expired token.\n\nBefore you create another token, re-use the access token until it expires. See the <a href=\"#rate-limiting-guideline\">rate limiting guidelines.</a>\n\n### API Requests ###\n\n-----------------\n\nTo construct a REST API request, combine these components : <br /><br />\n\n###### Component Description ######\n\n<table>\n<tbody>\n<tr>\n<td><p>The HTTP method</p></td>\n<td><ul><li><code>GET</code>. Requests data from a resource.</li><li><code>POST</code>. Submits data to a resource to process.</li><li><code>PUT</code>. Updates a resource.</li><li><code>PATCH</code>. Partially updates a resource.</li><li><code>DELETE</code>. Deletes a resource.</li></ul></td>\n</tr>\n<tr>\n<td><p>The URL to the API service</p></td>\n<td><ul><li>Sandbox. <code>https://topups-sandbox.reloadly.com</code></li><li>Live. <code>https://topups.reloadly.com</code></li></ul></td>\n</tr>\n<tr>\n<td><p>The URI to the resource</p></td>\n<td>The resource to query, submit data to, update, or delete. For example, <code>/reports/transactions</code>.</td>\n</tr>\n<tr>\n<td><p><a href=\"#query-parameters\" pa-marked=\"1\">Query parameters</a></p></td>\n<td>Optional. Controls which data appears in the response. Use to filter, limit the size of, and sort the data in an API response.</td>\n</tr>\n<tr>\n<td><p><a href=\"#http-request-headers\" pa-marked=\"1\">HTTP request headers</a></p></td>\n<td>Includes the <code>Authorization</code> header with the access token.</td>\n</tr>\n<tr>\n<td><p>A JSON request body</p></td>\n<td>Required for most <code>GET</code>, <code>POST</code>, <code>PUT</code>, and <code>PATCH</code> calls.</td>\n</tr>\n</tbody>\n</table>\n\n### Query Parameters\n\nFor most REST `GET` calls, you can specify one or more optional query parameters on the request URI to filter, limit the size of, and sort the data in an API response. For filter parameters, see the individual `GET` calls.<br /><br />\n\nTo limit, or <em>page</em>, and sort the data that is returned in some API responses, use these, or similar, query parameters :\n\n> **Note** : Not all pagination parameters are available for all APIs.<br />\n<table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>count</code></td>\n<td>integer</td>\n<td>The number of items to list in the response.</td>\n</tr>\n<tr>\n<td><code>startTime</code></td>\n<td>integer</td>\n<td>The start date and time for the range to show in the response, in <a href=\"https://tools.ietf.org/html/rfc3339#section-5.6\" class=\"dx-external-link\" title=\"external link\" target=\"_blank\" rel=\"noopener noreferrer\" pa-marked=\"1\">Internet date and time format</a>.<a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\" target=\"_blank\"> (ISO 8601)</a> For example, <code>startTime=2018-03-06 00:00:00</code>.</td>\n</tr>\n<tr>\n<td><code>endTime</code></td>\n<td>integer</td>\n<td>The end date and time for the range to show in the response, in <a href=\"https://tools.ietf.org/html/rfc3339#section-5.6\" class=\"dx-external-link\" title=\"external link\" target=\"_blank\" rel=\"noopener noreferrer\" pa-marked=\"1\">Internet date and time format</a>.<a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\" target=\"_blank\"> (ISO 8601)</a> For example, <code>endTime=2016-03-06 23:59:59</code>.</td>\n</tr>\n<tr>\n<td><code>page</code></td>\n<td>integer</td>\n<td>The zero-relative start index of the entire list of items that are returned in the response. So, the combination of <code>page=0</code> and <code>page_size=20</code> returns the first 20 items. The combination of <code>page=20</code> and <code>page_size=20</code> returns the next 20 items.</td>\n</tr>\n<tr>\n<td><code>size</code></td>\n<td>integer</td>\n<td>The number of items to return in the response.</td>\n</tr>\n<tr>\n<td><code>sortBy</code></td>\n<td>string</td>\n<td>Sorts the transactions in the response by a specified value, such as the create time or update time.</td>\n</tr>\n<tr>\n<td><code>sortOrder</code></td>\n<td>string</td>\n<td>Sorts the items in the response in ascending or descending order.</td>\n</tr>\n</tbody>\n</table>\n\n###\n\n-------------------------\n\nFor example, the Invoicing API returns details for four invoices beginning with the third invoice and includes the total count of invoices in the response:<br />\n\n```curl\ncurl -v -X GET https://sandbox.topups.reloadly.com/transactions?page=1&size=10&startTime=2018-03-01 00:00:00&endTime=2018-03-31 23:59:59 \\\n -H \"Accept: application/com.reloadly.topups-v1+json\" \\\n -H \"Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6Ik0wWXpRa\" \\\n```\n\n<br />\n\n### Request Headers\n\nThe commonly used HTTP request headers are : <br />\n\n<table>\n <colgroup><col width=\"33%\">\n <col width=\"67%\">\n </colgroup><thead>\n <tr>\n <th>Header</th>\n <th>Description</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td id=\"accept\"><strong>Accept</strong></td>\n <td>\n <p>Required for operations with a response body.</p>\n <p>Specifies the response format. The syntax is:</p>\n <pre class=\"dx-pre-hljs\"><code class=\"hljs\">Accept: application/<var>format</var></code></pre>\n <p>Where <code><var>format</var></code> is <code><strong>com.reloadly.topups-v1+json</strong></code>.</p>\n </td>\n </tr>\n <tr>\n <td id=\"authorization\"><strong>Authorization</strong></td>\n <td>\n <p>Required to get an access token or make API calls.</p>\n <p>To <a href=\"/docs/api/overview/#get-an-access-token\" pa-marked=\"1\">get an access token</a>, set this header to your <code>client_id</code> and <code>client_secret</code> credentials.</p>\n <blockquote class=\"dx-blockquote-note\"><strong>Note:</strong> If you use cURL, specify <code>-u \"client_id:secret\"</code>.</blockquote>\n <p>To make REST API calls, include the bearer token in the <code>Authorization</code> header with the <code>Bearer</code> authentication scheme:</p>\n <pre class=\"dx-pre-hljs\"><code class=\"hljs\">Authorization: Bearer <var>Access-Token</var></code></pre>\n </td>\n </tr>\n <tr>\n <td id=\"content-type\"><strong>Content-Type</strong></td>\n <td>\n <p>Required for operations with a request body.</p>\n <p>Specifies the request format. The syntax is:</p>\n <pre class=\"dx-pre-hljs\"><code class=\"hljs\">Content-Type: application/<var>format</var></code></pre>\n <p>Where <code><var>format</var></code> is <code>json</code>.</p>\n </td>\n </tr>\n </tbody>\n</table>\n\n### API Responses ###\n\n-----------------\n\nReloadly API calls return HTTP status codes. Some API calls also return JSON response bodies that include information about the resource including one or more contextual HATEOAS links. Use these links to request more information about and construct an API flow that is relative to a specific request.\n\n### HTTP status codes\n\nEach REST API request returns a <strong><a href=\"#success\">success</a></strong> or <strong><a href=\"#error\">error</a></strong> status code.\n\n#### Success\n\n<table>\n<thead>\n<tr>\n<th style=\"text-align:left\">Status code</th>\n<th style=\"text-align:left\">Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style=\"text-align:left\"><code>200 OK</code></td>\n<td style=\"text-align:left\">The request succeeded.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>201 Created</code></td>\n<td style=\"text-align:left\">A <code>POST</code> method successfully created a resource. If the resource was already created by a previous execution of the same method, for example, the server returns the HTTP <code>200 OK</code> status code.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>202 Accepted</code></td>\n<td style=\"text-align:left\">The server accepted the request and will execute it later.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>204 No Content</code></td>\n<td style=\"text-align:left\">The server successfully executed the method but returns no response body.</td>\n</tr>\n</tbody>\n</table>\n\n---------------------------\n\n#### Error\n\nIn the responses for failed requests, Reloadly returns HTTP <strong>`4XX`</strong> or <strong>`5XX`</strong> status codes.<br /><br />\n\nFor all errors except Identity errors, Reloadly returns an error response body that includes additional error details in this format:\n\n```\n{\n \"timeStamp\": ERROR_TIME_STAMP (numerical),\n \"message\": \"Account verification failed, invalid or expired token\",\n \"infoLink\": \"ERROR_DOCUMENTATION_LINK\",\n \"path\": \"/accounts/verify\",\n \"errorCode\": \"ERROR_CODE\",\n \n // Some types of errors also include a details array:\n \"details\": [\n {\n \"field\": \"FIELD_NAME\",\n \"issue\": \"PROBLEM_WITH_FIELD\"\n }\n ]\n}\n```\n\nIn the responses, Reloadly returns these HTTP status codes for failed requests:\n\n<table>\n<thead>\n<tr>\n<th style=\"text-align:left\">HTTP status code</th>\n<th style=\"text-align:left\">Typical error code and error message</th>\n<th style=\"text-align:left\">Cause</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style=\"text-align:left\"><code>400 Bad Request</code></td>\n<td style=\"text-align:left\"><code>INVALID_REQUEST</code>. Request is not well-formed, syntactically incorrect, or violates schema.</td>\n<td style=\"text-align:left\">See <a href=\"#validation-errors\" pa-marked=\"1\">Validation errors</a>. The server could not understand the request. Indicates one of these conditions:<ul><li>The API cannot convert the payload data to the underlying data type.</li><li>The data is not in the expected data format.</li><li>A required field is not available.</li><li>A simple data validation error occurred.</li></ul></td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>401 Unauthorized</code></td>\n<td style=\"text-align:left\"><code>AUTHENTICATION_FAILURE</code>. Authentication failed due to invalid authentication credentials.</td>\n<td style=\"text-align:left\">See <a href=\"#authentication-errors\" pa-marked=\"1\">Authentication errors</a>. The request requires authentication and the caller did not provide valid credentials.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>403 Forbidden</code></td>\n<td style=\"text-align:left\"><code>NOT_AUTHORIZED</code>. Authorization failed due to insufficient permissions.</td>\n<td style=\"text-align:left\">The client is not authorized to access this resource although it might have valid credentials. For example, the client does not have the correct OAuth 2 scope. Additionally, a business-level authorization error might have occurred. For example, the account holder does not have sufficient funds.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>404 Not Found</code></td>\n<td style=\"text-align:left\"><code>RESOURCE_NOT_FOUND</code>. The specified resource does not exist.</td>\n<td style=\"text-align:left\">The server did not find anything that matches the request URI. Either the URI is incorrect or the resource is not available. For example, no data exists in the database at that key.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>405 Method Not Allowed</code></td>\n<td style=\"text-align:left\"><code>METHOD_NOT_SUPPORTED</code>. The server does not implement the requested HTTP method.</td>\n<td style=\"text-align:left\">The service does not support the requested HTTP method. For example, <code>PATCH</code>.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>406 Not Acceptable</code></td>\n<td style=\"text-align:left\"><code>MEDIA_TYPE_NOT_ACCEPTABLE</code>. The server does not implement the media type that would be acceptable to the client.</td>\n<td style=\"text-align:left\">The server cannot use the client-request media type to return the response payload. For example, this error occurs if the client sends an <code>Accept: application/xml</code> request header but the API can generate only an <code>application/json</code> response.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>415</code> <code>Unsupported</code> <code>Media</code> <code>Type</code></td>\n<td style=\"text-align:left\"><code>UNSUPPORTED_MEDIA_TYPE</code>. The server does not support the request payload’s media type.</td>\n<td style=\"text-align:left\">The API cannot process the media type of the request payload. For example, this error occurs if the client sends a <code>Content-Type: application/xml</code> request header but the API can only accept <code>application/json</code> request payloads.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>422 Unprocessable Entity</code></td>\n<td style=\"text-align:left\"><code>UNPROCCESSABLE_ENTITY</code>. The API cannot complete the requested action, or the request action is semantically incorrect or fails business validation.</td>\n<td style=\"text-align:left\">The API cannot complete the requested action and might require interaction with APIs or processes outside of the current request. No systemic problems limit the API from completing the request. For example, this error occurs for any business validation errors, including errors that are not usually of the <code>400</code> type.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>429 Unprocessable Entity</code></td>\n<td style=\"text-align:left\"><code>RATE_LIMIT_REACHED</code>. Too many requests. Blocked due to rate limiting.</td>\n<td style=\"text-align:left\">The rate limit for the user, application, or token exceeds a predefined value. See <a href=\"https://tools.ietf.org/html/rfc6585\" class=\"dx-external-link\" title=\"external link\" target=\"_blank\" rel=\"noopener noreferrer\" pa-marked=\"1\">RFC 6585</a>.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>500 Internal Server Error</code></td>\n<td style=\"text-align:left\"><code>INTERNAL_SERVER_ERROR</code>. An internal server error has occurred.</td>\n<td style=\"text-align:left\">A system or application error occurred. Although the client appears to provide a correct request, something unexpected occurred on the server.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\"><code>503 Service Unavailable</code></td>\n<td style=\"text-align:left\"><code>SERVICE_UNAVAILABLE</code>. Service Unavailable.</td>\n<td style=\"text-align:left\">The server cannot handle the request for a service due to temporary maintenance.</td>\n</tr>\n</tbody>\n</table>\n\n----------------------\n\n<h4 id=\"validation-errors\">Validation errors</h4>\n\nFor validation errors, Reloadly returns the HTTP `400 Bad Request` status code.<br /><br />\n\nTo prevent validation errors, ensure that parameters are of the right type and conform to these constraints:<br /><br />\n\n<table>\n<thead>\n<tr>\n<th style=\"text-align:left\">Parameter type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td style=\"text-align:left\">Character</td>\n<td>Names, addresses, phone numbers, and so on have maximum character limits.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\">Numeric</td>\n<td>Amounts, ids, and so on must use non-negative numeric values and have required formats. For example, a CVV must be three or four numbers while a credit card number must contain only numbers.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\">Required</td>\n<td>Must be included in the request. For example, when you provide credit card information, you must include a postal code for most countries.</td>\n</tr>\n<tr>\n<td style=\"text-align:left\">Monetary</td>\n<td>Must use the right currency.</td>\n</tr>\n</tbody>\n</table>\n\n---------------------\n\n<h4 id=\"authentication-errors\">Authentication errors</h4>\n\nFor authentication errors, Reloadly returns the HTTP `401 Unauthorized` status code. See authentication and authorization.<br /><br />\nAccess token-related issues often cause authentication errors.<br /><br />\nEnsure that the access token is valid and present and not expired.\n\n### HATEOAS links\n\nHypermedia as the Engine of Application State (HATEOAS) is a constraint of the REST application architecture that distinguishes it from other network application architectures.<br /><br />\nThis excerpt from a sample response shows an array of HATEOAS links:<br /><br />\n\n```\n{ \n \"links\": [{\n \"href\": \"https://api.reloadly.com/payments/4\",\n \"rel\": \"self\",\n \"method\": \"GET\"\n }, {\n \"href\": \"https://api.reloadly.com/payments/4/refund\",\n \"rel\": \"refund\",\n \"method\": \"POST\"\n }]\n}\n```\n\nYou can use the links in this example, as follow :\n\n- Use the <strong>`self`</strong> link to get more information about the request. Combine the method and the target URL to make the call : \n ```\n GET https://api.reloadly.com/payments/4\n ```\n\n- Use the <strong>`refund`</strong> link to request a refund : \n ```\n POST https://api.reloadly.com/payments/4/refund\n ```\n\nThe elements in the <strong>`link`</strong> object are :<br />\n\n<table>\n<thead>\n<tr>\n<th>Element</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"#the-href-element\" pa-marked=\"1\"><code>href</code></a></td>\n<td>Required</td>\n<td>The target URL.</td>\n</tr>\n<tr>\n<td><a href=\"#the-rel-element\" pa-marked=\"1\"><code>rel</code></a></td>\n<td>Required</td>\n<td>The link relationship type.</td>\n</tr>\n<tr>\n<td><a href=\"#the-method-element\" pa-marked=\"1\"><code>method</code></a></td>\n<td>Optional</td>\n<td>The HTTP method. Default is <code>GET</code>.</td>\n</tr>\n</tbody>\n</table>\n\n#### The href element\n\nThe <strong>`href`</strong> element contains the complete target URL, or link, to use in combination with the HTTP <strong>`method`</strong> to make the related call. <strong>`href`</strong> is the key HATEOAS component that links a completed call with a subsequent call.\n<br />\n\n#### The rel element\n\nThe <strong>`rel`</strong> element contains the link relationship type, or how the href link relates to the previous call.\n<br />\n\n<p>For a complete list of the link relationship types, see <a href=\"https://www.iana.org/assignments/link-relations/link-relations.xhtml#link-relations-1\" class=\"dx-external-link\" title=\"external link\" target=\"_blank\" rel=\"noopener noreferrer\" pa-marked=\"1\">Link Relationship Types</a>.</p>\n\n<br />\n\n#### The method element\n\nOptional. The <strong>`method`</strong> element contains an HTTP method. If present, use this method to make a request to the target URL. If absent, the default method is <strong>`GET`</strong>.\n<br /><br /><br />\nThe HTTP methods are :<br />\n\n<table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>DELETE</code></td>\n<td>Deletes a resource.</td>\n</tr>\n<tr>\n<td><code>GET</code></td>\n<td>Shows details for a resource or lists resources.</td>\n</tr>\n<tr>\n<td><code>PATCH</code></td>\n<td>Partially updates a resource.</td>\n</tr>\n<tr>\n<td><code>POST</code></td>\n<td>Creates or manages a resource.</td>\n</tr>\n<tr>\n<td><code>PUT</code></td>\n<td>Updates a resource.</td>\n</tr>\n</tbody>\n</table>\n\n--------------------------\n\n### Error Codes\n\nA Reloadly API operation may return multiple error and warning codes : <br /><br />\n\n###### Code Description ######\n\n<table>\n<tbody>\n<tr>\n<td><p>TOKEN_EXPIRED</p></td>\n<td><p>\nAccess tokens have a finite lifetime. The expires_in field in the get access token response indicates the lifetime, in seconds, of the access token. For example, an expiry value of 3600 indicates that the access token expires in one hour from the time the response was generated.<br /><br />\nTo detect when an access token expires, write code to either :\n\n+ Keep track of the `expires_in` value in the token response. The value is expressed in seconds.\n+ Handle the HTTP `401 Unauthorized` status code and the `TOKEN_EXPIRED` error code in the <a href=\"#error-response-message\">error response message</a>. The API endpoint issues this status code when it detects an expired token.\n</p></td>\n</tr>\n<tr>\n<td><p>COUNTRY_NOT_SUPPORTED</p></td>\n<td><p>The specified country (ISO-2 country code) in the request is currently not supported</p></td>\n</tr>\n<tr>\n<td><p>INVALID_RECIPIENT_PHONE</p></td>\n<td>The specified `recipientPhone` in the request is not valid for the specified country (ISO-2 country code) country</td>\n</tr>\n<tr>\n<td><p>INVALID_SENDER_PHONE</p></td>\n<td>The specified `senderPhone` in the request is not valid for the specified country (ISO-2 country code) country</td>\n</tr>\n<tr>\n<td><p>INVALID_PHONE_NUMBER</p></td>\n<td>The specified phone number is not valid</td>\n</tr>\n<tr>\n<td><p>PHONE_RECENTLY_RECHARGED</p></td>\n<td>After a given phone number has been topuped-up, a delay of 2 minutes has to take place before the same phone number can be topuped-up again.</td>\n</tr>\n<tr>\n<td><p>COUNTRY_NOT_SUPPORTED</p></td>\n<td>The specified country in the request is currently disabled or not supported</td>\n</tr>\n<tr>\n<td><p>OPERATOR_UNAVAILABLE_OR_CURRENTLY_INACTIVE</p></td>\n<td>The specified operator is currently disabled or inactive on the platform.</td>\n</tr>\n<tr>\n<td><p>INACTIVE_ACCOUNT</p></td>\n<td>Reloadly reserves the right to de-activate a developer account for various reasons. The developer must contact support for more info.</td>\n</tr>\n<tr>\n<td><p>INVALID_AMOUNT_FOR_OPERATOR</p></td>\n<td>The specified topup amounts is not valid for the given operator in the request.</td>\n</tr>\n<tr>\n<td><p>TOPUP_TRANSACTION_FAILED</p></td>\n<td>Topup transactions may failed various reasons. Developer must contact support if they need more details.</td>\n</tr>\n<tr>\n<td><p>COULD_NOT_AUTO_DETECT_OPERATOR</p></td>\n<td>Reloadly platform has the ability to auto-detect mobile carriers/operators for a given phone number, see <a href=\"#auto-detect-operator\" pa-marked=\"1\">Operator auto-detect</a>. \nIn cases where that's not possible, this error code is returned.</td>\n</tr>\n<tr>\n<td><p>ACCOUNT_NOT_FOUND</p></td>\n<td>User account not found or does not exist.</td>\n</tr>\n<tr>\n<td><p>MAX_DAILY_TRANSACTION_COUNT_REACHED</p></td>\n<td>Some developer account may have a daily transaction count limit. This error code is returned when that occurs</td>\n</tr>\n<tr>\n<td><p>MAX_DAILY_TRANSACTION_AMOUNT_REACHED</p></td>\n<td>Some developer account may have a daily total transaction amount limit. This error code is returned when that occurs</td>\n</tr>\n<tr>\n<td><p>TRANSACTION_CANNOT_BE_PROCESSED_AT_THE_MOMENT</p></td>\n<td>Topup transactions may failed various reasons. Developer must contact support if they need more details.</td>\n</tr>\n<tr>\n<td><p>INVALID_AMOUNT</p></td>\n<td>Reloadly expects amounts to be numerical.</td>\n</tr>\n<tr>\n<td><p>INSUFFICIENT_BALANCE</p></td>\n<td>This error code is returned when a user attempts an API operation that requires adequate account balance to be available in order to be performed.\nThis error code is returned when the user account lack enought balance.\n</td>\n</tr>\n<tr>\n<td><p>OPERATOR_NOT_IN_SERVICE</p></td>\n<td>The specified operator in the request is currently disabled, inactive or not in service on the platform.</td>\n</tr>\n</tbody>\n</table>\n\n<br /><br />\n\n### Make Your First Call ###\n\n-----------------\n\n<br />\nTo make REST API calls, create a Reloadly developer account and get an access token : <br /><br />\n\n<table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1.</td>\n<td><a href=\"https://www.reloadly.com/login\" target=\"_blank\" pa-marked=\"1\"><strong>Create a developer account</strong></a> <= (click to go there).<br>When you create a developer account, Reloadly generates a set of OAuth credentials.</td>\n</tr>\n<tr>\n<td>2.</td>\n<td><a href=\"#get-an-access-token\" pa-marked=\"1\"><strong>Get an access token</strong></a>.<br>Pass the OAuth credentials in a get access token call.<br>In response, the Reloadly authorization server issues an access token.</td>\n</tr>\n<tr>\n<td>3.</td>\n<td><a href=\"#make-rest-api-calls\" pa-marked=\"1\"><strong>Make REST API calls</strong></a>.<br>Use the access token for authentication when you make REST API calls.</td>\n</tr>\n</tbody>\n</table>\n\n<br />\n\n#### Get an access token\n\n<blockquote class=\"dx-blockquote-tip\">\n<p><strong>URLs:</strong></p>\n<ul>\n<li><strong>`https://auth.reloadly.com/oauth/token`</strong></li>\n</ul>\n</blockquote><br />\n\n<p>To get an access token, you pass your OAuth credentials in a get access token call. To make this call, you can use either cURL on the command line or the Postman app.</p><br />\n\n<p>In response, the Reloadly authorization server issues an access token.</p><br />\n\n<p>Re-use the access token until it expires. See our rate limiting guidelines. When it expires, you can get a new token.</p>\n\n#### cURL example\n\n<blockquote class=\"dx-blockquote-tip\">\n<p><strong>Tips:</strong></p>\n<ul>\n<li>If you use Windows, use a Bash shell to make cURL calls.</li>\n<li>If you use a command-line tool other than cURL, set <code>content-type</code> to <code>application/json</code>.</li>\n</ul>\n</blockquote><br />\n\n<strong>1.</strong> Download <a href=\"https://curl.haxx.se/download.html\" target=\"_blank\">cURL</a> for your environment.\n<br /><br />\n<strong>2.</strong> From the command line, run this command :<br /><br />\n\n```\ncurl -d '{\n \"client_id\":\"YOUR_CLIENT_ID\",\n \"client_secret\":\"YOUR_CLIENT_SECRET\",\n \"grant_type\":\"client_credentials\",\n \"audience\":\"https://topups.reloadly.com\"\n }' \\\n -H \"Content-Type: application/json\" \\\n -X POST https://auth.reloadly.com/oauth/token \\\n```\n<br />\nWhere : <br />\n<table>\n <colgroup><col width=\"25%\">\n <col width=\"75%\">\n </colgroup><tbody>\n <tr>\n <td>The get access token endpoint.</td>\n <td>\n <code>https://auth.reloadly.com/oauth/token</code>\n </td>\n </tr>\n <tr>\n <td>\n <code><var>client_id</var></code>\n </td>\n <td>Your client ID.</td>\n </tr>\n <tr>\n <td>\n <code><var>client_secret</var></code>\n </td>\n <td>Your client secret.</td>\n </tr>\n <tr>\n <td>\n <code><var>audience</var></code>\n </td>\n <td>The API you're requesting the access token for. <br /> Live : <code>https://topups.reloadly.com</code> <br /> Sandbox : <code>https://topups-sandbox.reloadly.com</code></td>\n </tr>\n <tr>\n <td><code>grant_type</code></td>\n <td>The grant type. Set to <code>client_credentials</code>.</td>\n </tr>\n </tbody></table>\n<br />\n\n<strong>3.</strong> View the <a href=\"#sample-response\">sample response</a>.<br /><br />\n\n#### Postman example\n<ol>\n <li>\n <p>Download the latest version of <a href=\"https://www.getpostman.com/\" class=\"dx-external-link\" title=\"external link\" target=\"_blank\" rel=\"noopener noreferrer\" pa-marked=\"1\">Postman</a> for your environment, and open Postman.</p>\n </li>\n <li>\n <p>Select the <code>POST</code> method.</p>\n </li>\n <li>\n <p>Enter the <code>https://auth.reloadly.com/oauth/token</code> request URL.</p>\n </li>\n <li>\n <p>On the <strong>Header</strong> tab, enter <strong>Content-Type</strong> under key and <strong>application/json</strong> as value : </p>\n <table>\n <colgroup><col width=\"25%\">\n <col width=\"75%\">\n </colgroup><tbody><tr>\n <td><strong>key</strong></td>\n <td>Content-Type</td>\n </tr>\n <tr>\n <td><strong>value</strong></td>\n <td>application/json</td>\n </tr>\n </tbody></table>\n </li>\n <li>\n <p>On the <strong>Body</strong> tab, select <strong>raw</strong> and enter this information : </p>\n <code>\n {\n \n \"client_id\": \"YOUR_CLIENT_ID\",\n \n \"client_secret\": \"YOUR_CLIENT_SECRET\",\n \n \"grant_type\": \"client_credentials\",\n \n \"audience\": \"https://topups-sandbox.reloadly.com\"\n }\n </li>\n <li>\n <p>Click <strong>Send</strong>.</p>\n </li>\n <li>\n <p>View the sample response : </p>\n <code>\n {\n \n \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSU\",\n \n \"scope\": \"send-topups read-topups-history read-operators read-promotions\",\n \n \"expires_in\": 86400,\n \n \"token_type\": \"Bearer\"\n }\n </li>\n</ol>\n\nWhere : <br />\n<table>\n <colgroup><col width=\"25%\">\n <col width=\"75%\">\n </colgroup><tbody><tr>\n <td>\n <code><var>access_token</var></code>\n </td>\n <td>Your access token.</td>\n </tr>\n <tr>\n <td><code>expires_in</code></td>\n <td>The number of seconds after which the token expires. Request another token when the current one expires.</td>\n </tr>\n</tbody></table>\n\n#### Make REST API Calls\n\n<p>With a valid access token, you can make REST API calls.</p><br />\n<p>This sample call sends a airtime (topup) transaction and uses only the required input parameters. The access token in the call is an OAuth bearer token.</p>\n<br />\n<blockquote class=\"dx-blockquote-note\">\n<p><strong>Note:</strong> Topups API calls are always made by an `actor`. The actor specifies a bearer token in the <code>Authorization: Bearer</code> request header. A bearer token is an access token that is issued to the actor by an authorization server with the approval of the resource owner. In this case, the actor uses the bearer token to make a topup request.</p>\n</blockquote>\n\n```\ncurl -d '{\n \"recipientPhone\": {\n \"countryCode\": \"HT\",\n \"number\": \"50936377111\" //(Note the \"+509\" country dialing code for Haiti)\n },\n \"senderPhone\": {\n \"countryCode\": \"US\",\n \"number\": \"13059547862\" //(Note the \"+1\" country dialing code for USA)\n },\n \"operatorId\": 173,\n \"amount\": 15,\n \"customIdentifier\": \"transaction by john@example.com\"\n }' \\\n -H \"Accept: application/com.reloadly.topups-v1+json\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSU\" \\\n -X POST https://topups.reloadly.com/topups\n```\n\n<br />\n\n<blockquote class=\"dx-blockquote-note\">\n<p><strong>Note:</strong> Phone numbers (`recipientPhone`, `senderPhone`) can be in 2 formats. \nIn the example above, the \"+\" sign is not present in front of the country dialing codes (see <a href=\"https://countrycode.org/\">countries dialing codes</a>).\nOur API also accept phone number prefixed with \"+\".\nThe following is equivalent to the example above :\n</p>\n</blockquote>\n\n```\ncurl -d '{\n \"recipientPhone\": {\n \"countryCode\": \"HT\",\n \"number\": \"+50936377111\" //(Note the \"+509\" country dialing code for Haiti)\n },\n \"senderPhone\": {\n \"countryCode\": \"US\",\n \"number\": \"+13059547862\" //(Note the \"+1\" country dialing code for USA)\n },\n \"operatorId\": 173,\n \"amount\": 15,\n \"customIdentifier\": \"transaction by john@example.com\"\n }' \\\n -H \"Accept: application/com.reloadly.topups-v1+json\" \\\n -H \"Content-Type: application/json\" \\\n -H \"Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSU\" \\\n -X POST https://topups.reloadly.com/topups\n```\n\n<br/><br /><br />\n\n## API REFERENCE\n\n<br />\n\n## Topups API ###\n\n-----------------\n\nThe Reloadly Topups API is RESTful and uses a JSON data format. The API grants users in more than 100 countries access to its feature set. The API enables users to conduct topup (airtime) transactions, retrieve account data, view international rates, see history and much more.\n<br /><br />\n\n#### Account Balance (resource group)\n\n--------------------\n\nUse the `/accounts/balance` resource to list account available balance.","title":"Reloadly Topup","version":"1.0.0","x-apisguru-categories":["telecom"],"x-logo":{"url":"https://twitter.com/Reloadly/profile_image?size=original"},"x-origin":[{"converter":{"url":"https://github.com/lucybot/api-spec-converter","version":"2.7.18"},"format":"apiBlueprint","url":"https://topupsapi.docs.apiary.io/api-description-document","version":"1A"}],"x-providerName":"reloadly.com"},"tags":[],"paths":{"/accounts/balance":{"get":{"description":"","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"balance":550.75,"currencyCode":"USD"}}}}}}},"summary":"Retrieve account balance","tags":[]}},"/countries":{"get":{"description":"","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":[{"callingCodes":["+93"],"currencyCode":"AFN","currencyName":"Afghan Afghani","flag":"https://s3.amazonaws.com/rld-flags/af.svg","isoName":"AF","name":"Afghanistan"},{"callingCodes":["+355"],"currencyCode":"ALL","currencyName":"Albanian Lek","flag":"https://s3.amazonaws.com/rld-flags/al.svg","isoName":"AL","name":"Albania"},{"callingCodes":["+213"],"currencyCode":"DZD","currencyName":"Algerian Dinar","flag":"https://s3.amazonaws.com/rld-flags/dz.svg","isoName":"DZ","name":"Algeria"},{"callingCodes":["+1684"],"currencyCode":"USD","currencyName":"US Dollar","flag":"https://s3.amazonaws.com/rld-flags/as.svg","isoName":"AS","name":"American Samoa"},{"callingCodes":["+244"],"currencyCode":"AOA","currencyName":"Angolan Kwanza","flag":"https://s3.amazonaws.com/rld-flags/ao.svg","isoName":"AO","name":"Angola"},{"callingCodes":["+1264"],"currencyCode":"XCD","currencyName":"East Caribbean Dollar","flag":"https://s3.amazonaws.com/rld-flags/ai.svg","isoName":"AI","name":"Anguilla"},{"callingCodes":["+1268"],"currencyCode":"XCD","currencyName":"East Caribbean Dollar","flag":"https://s3.amazonaws.com/rld-flags/ag.svg","isoName":"AG","name":"Antigua and Barbuda"},{"callingCodes":["+54"],"currencyCode":"ARS","currencyName":"Argentine Peso","flag":"https://s3.amazonaws.com/rld-flags/ar.svg","isoName":"AR","name":"Argentina"}]}}}}}},"summary":"List All Supported Countries","tags":[]}},"/countries/HT":{"get":{"description":"See http://www.nationsonline.org/oneworld/country_code_list.htm\n - Endpoint : `/countries/{countryIsoCode}`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"callingCodes":["+509"],"currencyCode":"HTG","currencyName":"Haitian Gourde","flag":"https://s3.amazonaws.com/rld-flags/ht.svg","isoName":"HT","name":"Haiti"}}}}}}},"summary":"Retrieve a country by country ISO code (ISO Alpha-2)","tags":[]}},"/operators/173":{"get":{"description":"- Endpoint : `/operators/{operatorId}`\n <h4 id=\"auto-detect-operator\"></h4>","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"bundle":false,"countryCode":"HT","defaultCommissionPercentage":15,"name":"Digicel Haiti","operatorId":173,"status":true}}}}}}},"summary":"Retrieve a operator by id","tags":[]}},"/operators/173/commissions":{"get":{"description":"- Endpoint : `/operators/{operatorId}/commissions`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"operator":{"bundle":false,"countryCode":"HT","name":"Digicel Haiti","operatorId":173,"status":true},"percentage":15,"updatedAt":"2018-06-26 03:36:16"}}}}}}},"summary":"Retrieve account operator commission by operator id","tags":[]}},"/operators/auto-detect/phone/+50936377111/country-code/HT?&includeBundles=true":{"get":{"description":"- NOTE: Supports phone number with a \"+\" in front of the country dialing code or without a \"+\" country dialing code.\n Example : `+50936377111` or `50936377111` are equivalent\n `/operators/auto-detect/phone/{phone}/country-code/{countryIsoCode}?&includeBundles=true`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"bundle":false,"countryCode":"HT","defaultCommissionPercentage":15,"name":"Digicel Haiti","operatorId":173,"status":true}}}}}}},"summary":"Auto-detect mobile operator for given phone number","tags":[]}},"/operators/commissions?page=1&size=3":{"get":{"description":"","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"content":[{"operator":{"bundle":false,"countryCode":"AF","name":"Afghan Wireless Afghanistan","operatorId":1,"status":true},"percentage":10,"updatedAt":"2018-06-26 03:36:16"},{"operator":{"bundle":false,"countryCode":"AF","name":"MTN Afghanistan","operatorId":2,"status":true},"percentage":10,"updatedAt":"2018-06-26 03:36:16"},{"operator":{"bundle":false,"countryCode":"AF","name":"Etisalat Afghanistan","operatorId":3,"status":true},"percentage":10,"updatedAt":"2018-06-26 03:36:16"}],"first":true,"last":false,"number":0,"numberOfElements":3,"pageable":{"offset":0,"pageNumber":0,"pageSize":3,"paged":true,"sort":{"sorted":false,"unsorted":true},"unpaged":false},"size":3,"sort":{"sorted":false,"unsorted":true},"totalElements":611,"totalPages":204}}}}}}},"summary":"List All Commissions","tags":[]}},"/operators/countries/HT":{"get":{"description":"- Endpoint : `/operators/countries/{countryIsoCode}`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":[{"bundle":false,"countryCode":"HT","defaultCommissionPercentage":15,"name":"Digicel Haiti","operatorId":173,"status":true},{"bundle":false,"countryCode":"HT","defaultCommissionPercentage":12,"name":"Natcom Haiti","operatorId":174,"status":true}]}}}}}},"summary":"List available operators by (ISO Alpha-2) country code","tags":[]}},"/operators?page=1&size=3&suggestedAmounts=true&suggestedAmountsMap=true&includeBundles=true":{"get":{"description":"","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"content":[{"bundle":false,"countryCode":"AF","defaultCommissionPercentage":10,"name":"Afghan Wireless Afghanistan","operatorId":1,"status":true},{"bundle":false,"countryCode":"AF","defaultCommissionPercentage":10,"name":"MTN Afghanistan","operatorId":2,"status":true},{"bundle":false,"countryCode":"AF","defaultCommissionPercentage":10,"name":"Etisalat Afghanistan","operatorId":3,"status":true}],"first":true,"last":false,"number":0,"numberOfElements":3,"pageable":{"offset":0,"pageNumber":0,"pageSize":3,"paged":true,"sort":{"sorted":false,"unsorted":true},"unpaged":false},"size":3,"sort":{"sorted":false,"unsorted":true},"totalElements":609,"totalPages":203}}}}}}},"summary":"List All Operators","tags":[]}},"/promotions/5":{"get":{"description":"- Endpoint : `/promotions/{promotionId}`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"denominations":"USD 2 and up","description":"<br />- For top ups of USD$2.00 (EUR 5) or more, customers will receive double bonus 2x + 5 days of Whatsapp.<br />- Validity: 5 days<br />- Applies for all prepaid plans.<br /><br />Términos y Condiciones (Spanish version):<br />- Por recarfas desde 2 USD (5 €) o más, el destinatario recibirá doble bono (2x) + 5 dias de WhatsApp<br />- Vigencia 5 días <br />- Aplica a todos los planes prepago","endDate":"Mon, 02 Jul 2018 04:59:00 +0000","operatorId":114,"promotionId":5,"startDate":"Mon, 01 Jan 2018 05:00:00 +0000","title":" Movistar Ecuador From 01 Jan 2018 00:00 To 01 Jul 2018 23:59 (GMT-05:00)","title2":"Bonus 2x"}}}}}}},"summary":"Retrieve topup operator promotion by id","tags":[]}},"/promotions/operators/129":{"get":{"description":"- Endpoint : `/promotions/operators/{operatorId}`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":[{"denominations":"USD 10 and up","description":"<br />- For top ups of $10 or more, customers in El Salvador receive the top up plus 500 MBs + 150 Minutes for USA/CAN for 15 days.<br />- The benefits are applied when the top up is received by the user in El Salvador.<br />- Promotional minutes are valid to call any phone number in the USA.<br />- The promotional benefits will be available for use during a period of 360 hours after the top up was received. (15 days)","endDate":"Tue, 26 Jun 2018 05:59:00 +0000","operatorId":129,"promotionId":1,"startDate":"Mon, 25 Jun 2018 06:00:00 +0000","title":" Tigo El Salvador From 25 Jun 2018 00:00 To 25 Jun 2018 23:59 (GMT-06:00)","title2":"Get 500 MB and 150 minutes for USA or Canada"},{"denominations":"USD 7 and up","description":"<br />- For top ups between USD $7 and up, customers will receive 300 additional MBs + 60 Minutes for USA/CAN<br />- Promotional balance will expire in 5 days","endDate":"Tue, 26 Jun 2018 05:59:00 +0000","operatorId":129,"promotionId":6,"startDate":"Mon, 25 Jun 2018 06:00:00 +0000","title":" Tigo El Salvador From 25 Jun 2018 00:00 To 25 Jun 2018 23:59 (GMT-06:00)","title2":"Get 300 MB and 60 minutes for USA or Canada"},{"denominations":"USD 7 and up","description":"<br />- For top ups between USD $7 and up, customers will receive 300 additional MBs + 60 Minutes for USA/CAN<br />- Promotional balance will expire in 5 days","endDate":"Sat, 30 Jun 2018 05:59:00 +0000","operatorId":129,"promotionId":9,"startDate":"Fri, 29 Jun 2018 06:00:00 +0000","title":" Tigo El Salvador From 29 Jun 2018 00:00 To 29 Jun 2018 23:59 (GMT-06:00)","title2":"Get 300 MB and 60 minutes for USA or Canada"}]}}}}}},"summary":"Retrieve topup operator promotion by operator id","tags":[]}},"/promotions?page=1&size=3":{"get":{"description":"","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"content":[{"denominations":"USD 10 and up","description":"<br />- For top ups of $10 or more, customers in El Salvador receive the top up plus 500 MBs + 150 Minutes for USA/CAN for 15 days.<br />- The benefits are applied when the top up is received by the user in El Salvador.<br />- Promotional minutes are valid to call any phone number in the USA.<br />- The promotional benefits will be available for use during a period of 360 hours after the top up was received. (15 days)","endDate":"Tue, 26 Jun 2018 05:59:00 +0000","operatorId":129,"promotionId":1,"startDate":"Mon, 25 Jun 2018 06:00:00 +0000","title":" Tigo El Salvador From 25 Jun 2018 00:00 To 25 Jun 2018 23:59 (GMT-06:00)","title2":"Get 500 MB and 150 minutes for USA or Canada"},{"denominations":"USD 14 and up","description":"<br />- Calls and SMS to USA, OnNet and ExtNet calls.<br />- Promotional balance expiration date: 30 days<br /><br />Exceptions for promotional balance: <br />- Browsing, purchase of Paquetigos, Backtones, Give Me Balance","endDate":"Sun, 01 Jul 2018 05:59:00 +0000","localDenominations":"GTQ 100.80 and up","operatorId":158,"promotionId":2,"startDate":"Sat, 30 Jun 2018 06:00:00 +0000","title":" Tigo Guatemala From 30 Jun 2018 00:00 To 30 Jun 2018 23:59 (GMT-06:00)","title2":"Bonus 3x"},{"denominations":"USD 5 and up","description":"<br />- For Top Ups of 5 USD (5 EUR) or more, customers will receive double 2x balance.+ 7 days of Whatsapp.<br /><br />Términos y Condiciones (Spanish version):<br />- Por recargas desde 5 USD (5 EUR) o más, el destinatario recibirá doble saldo (2x) + 7 dias de WhatsApp.","endDate":"Mon, 02 Jul 2018 05:59:00 +0000","localDenominations":"CRC 5000 and up","operatorId":100,"promotionId":3,"startDate":"Mon, 01 Jan 2018 06:00:00 +0000","title":" Movistar Costa Rica From 01 Jan 2018 00:00 To 01 Jul 2018 23:59 (GMT-06:00)","title2":"Bonus 2x"}],"first":true,"last":false,"number":0,"numberOfElements":3,"pageable":{"offset":0,"pageNumber":0,"pageSize":3,"paged":true,"sort":{"sorted":false,"unsorted":true},"unpaged":false},"size":3,"sort":{"sorted":false,"unsorted":true},"totalElements":44,"totalPages":15}}}}}}},"summary":"List all topup operators promotions","tags":[]}},"/topups":{"post":{"description":"- Endpoint : `/topups`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"countryCode":"HT","customIdentifier":"transaction by john@example.com","deliveredAmount":997.2,"deliveredAmountCurrencyCode":"HTG","operatorId":173,"recipientPhone":"50936377111","requestedAmount":15,"requestedAmountCurrencyCode":"USD","senderPhone":"13059547862","transactionDate":"2018-06-26 07:43:36","transactionId":1}}}}}}},"summary":"Send Topup","tags":[]}},"/topups/reports/transactions?page=1&size=1&startTime=2018-06-01 00:00:00&endTime=2018-06-26 23:59:59":{"get":{"description":"- Endpoint : `/topups/reports/transactions?page=1&size=1&startTime=2018-06-01 00:00:00&endTime=2018-06-26 23:59:59`","responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"examples":{"response":{"value":{"content":[{"countryCode":"HT","customIdentifier":"transaction by john@example.com","deliveredAmount":997.2,"deliveredAmountCurrencyCode":"HTG","operatorId":173,"recipientPhone":"50936377111","requestedAmount":15,"requestedAmountCurrencyCode":"USD","senderPhone":"13059547862","transactionDate":"2018-06-26 07:43:36","transactionId":1}],"first":true,"last":true,"number":0,"numberOfElements":1,"pageable":{"offset":0,"pageNumber":0,"pageSize":100,"paged":true,"sort":{"sorted":true,"unsorted":false},"unpaged":false},"size":100,"sort":{"sorted":true,"unsorted":false},"totalElements":1,"totalPages":1}}}}}}},"summary":"Retrieve topup transact