openapi: 3.0.0
info:
  title: eSim-Go API
  version: 1.0.0
servers:
  - url: http://{{baseurl}}
  - url: http://{{baseurl}}https
components:
  securitySchemes:
    apikeyAuth:
      type: http
      scheme: apikey
tags:
  - name: api 
  - name: callback 
  - name: esims
  - name: esims (Deprecated)
  - name: organisation
  - name: orders
  - name: inventory
  - name: catalogue
  - name: networks
paths:
  /:
    get:
      tags:
        - api
      summary: Get API details
      description: Returns information about the available API endpoints.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                - <string>
                - <string>
  //your-usage-callback-url/:
    post:
      tags:
        - callback
      summary: eSIM Usage Callback
      description: >
        V3 of the Callback system is now available and provides additional data
        as well as HMAC signature validation.

        **This must be enabled in the eSIM Portal.**

        V2 of the Callback system is still available by default, but will be
        disabled in the future.


        When data is used on an eSIM, a usage event can be sent to a URL defined
        by you in the eSIM Portal.

        The usage event will report the current bundle in use by an eSIM, and
        it's remaining data.


        Example of validating HMAC body in NodeJS:


        ```javascript

        import crypto from "crypto";


        const signature = crypto
            .createHmac("sha256", key) // key is your API Key
            .update(body) // body is the raw (string) request body
            .digest("base64");

        const matches = signature === signatureHeader;

        ```


        Validation uses your API Key as the HMAC key.

        The body of the request is the raw (string) request body, and should not
        be parsed as JSON before validation.


        **Note:** Bundle names are case sensitive e.g. "esim_1GB_7D_IM_U".


        **Request Body Notes:**

        - The "try" button for this endpoint is **NOT** functional

        - The schema defines an example message that is sent to the configured
        callback URL.

        - For more information on callback notification types, Please see the
        [Notifications Page](/api/notifications#overview).
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                iccid: <string>
                alertType: <string>
                bundle:
                  id: <string>
                  reference: <string>
                  name: <string>
                  description: <string>
                  initialQuantity: <integer>
                  remainingQuantity: <integer>
                  startTime: <dateTime>
                  endTime: <dateTime>
                  unlimited: <boolean>
      parameters:
        - name: Content-Type
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: Successful response
          content:
            application/json: {}
  /esims/apply:
    post:
      tags:
        - esims
      summary: Apply Bundle to an eSIM
      description: >
        This endpoint enables you to receive a new eSIM with the specified
        Bundle pre-applied.

        **Usage:**
        
        * Either provide Bundle or Bundles.
        
        * If an ICCID is provided as well as only a Bundle, the Bundle will be
        applied to the eSIM for that ICCID.

        * If no ICCID is provided, a new eSIM will be assigned to you, and the
        Bundle applied.
        
        * If no ICCID is provided, as well as only providing a Bundle, Repeat
        can be provided to assign *Repeat* eSIMs to you with the Bundle applied.

        * If Bundles is provided, seperate new eSIMs will be provided to you for
        each bundle.

        * The ICCID is always returned in the response.

        * An ICCID cannot be provided in conjunction with the Repeat field.

        * Bundle names are case sensitive and should be typed like the following
        "esim_1GB_7D_IM_U".

        **Notes:**

        * In order to use this you must first have already purchased Bundles and
        have them available in your inventory on your account.
        
        * Bundle assignments to an eSIM are usually instant but please allow for
        up to 10 minutes for the bundle to fully process. While the bundle is
        processing the eSIM can be successfully installed and the eSIM will
        register onto a network if within coverage.

        * The Bundle Status can be checked through [Get the Status of a bundle
        assigned to an
        eSIM](https://docs.esim-go.com/api/#get-/esims/-iccid-/bundles/-name-)
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                iccid: <string>
                bundle: <string>
                bundles:
                  - <string>
                  - <string>
                startTime: <string>
                repeat: <integer>
                allowReassign: <boolean>
      security:
        - apikeyAuth: []
      parameters:
        - name: Content-Type
          in: header
          schema:
            type: string
          example: application/json
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                esims:
                  - iccid: <string>
                    status: <string>
                  - iccid: <string>
                    status: <string>
                applyReference: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '503':
          description: Service Unavailable
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/qr/{reference}:
    get:
      tags:
        - esims (Deprecated)
      summary: >-
        Get QR codes for eSIMs from an Order or Bundle apply reference
        (Deprecated)
      description: >
        Get multiple QR codes by providing an Order or Apply Reference. Returns
        multiple QR codes as `.PNG` contained in a `.ZIP`.
        Deprecated: See `/esims/assignments`
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/zip
        - name: reference
          in: path
          schema:
            type: string
          required: true
          description: (Required) Order Reference or Apply Reference
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/zip
          content:
            text/plain:
              schema:
                type: string
              example: <zip>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/csv/{reference}:
    get:
      tags:
        - esims (Deprecated)
      summary: Get CSV containing eSIMs from an Order or Bundle apply (Deprecated)
      description: |
        Get eSIM SMDP+ details by providing an Order or Apply Reference.
        Contains ICCID, SMDP+ address and Matching ID.
        Deprecated: See `/esims/assignments`
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: text/csv
        - name: additionalFields
          in: query
          schema:
            type: string
          example: appleInstallUrl
        - name: additionalFields
          in: query
          schema:
            type: string
          example: appleInstallUrl
        - name: reference
          in: path
          schema:
            type: string
          required: true
          description: (Required) Order Reference or Apply Reference
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: text/csv
          content:
            text/plain:
              schema:
                type: string
              example: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/assignments:
    get:
      tags:
        - esims
      summary: Get eSIM Install Details
      description: >
        Get eSIM SMDP+ details by providing an Order or Apply Reference.
        Contains ICCID, SMDP+ address and Matching ID.
        Multiple `reference`'s can be passed in using the query parameter.
        Use the `Accept` header to control output format. Supported: `text/csv`,
        `application/json`, `application/zip`.
        Default return value is `text/csv`.
        Using `application/zip` returns a ZIP file containing QR code images (in
        PNG format).
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: reference
          in: query
          schema:
            type: string
          description: (Required) Order Reference or Apply Reference
          example: <string>
        - name: additionalFields
          in: query
          schema:
            type: string
          example: appleInstallUrl
        - name: additionalFields
          in: query
          schema:
            type: string
          example: appleInstallUrl
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: string
              example: ''
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/history:
    get:
      tags:
        - esims
      summary: Get eSIM history
      description: |
        Return the history of an eSIM.
        Bundle Assignment States:
        - **Processing:**
          The bundle assignment is currently processing.
          This is usually instant but can, on occasion, take up to 10 minutes to complete.
          The eSIM can still be installed and will register on a network while the bundle is processing.
        - **Queued:**
          The bundle has been successfully assigned, has not been used yet, and is queued for use.
        - **Active:**
          The bundle has successfully been used.
          It has data remaining and is within the bundle duration.
        - **Depleted:**
          The bundle has no data remaining but is still within the bundle duration.
        - **Expired:**
          The bundle has expired, and the bundle duration has been exceeded.
        - **Revoked:**
          The bundle has been revoked, and is no longer on the esim.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                - name: <string>
                  bundle: <string>
                  date: <string>
                  bundleState: <string>
                  alertType: <string>
                - name: <string>
                  bundle: <string>
                  date: <string>
                  bundleState: <string>
                  alertType: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/refresh:
    get:
      tags:
        - esims
      summary: Refresh eSIM
      description: >-
        This request is used to generate a cancel location request to the
        network, note this disconnects the customer from the network and should
        be used for troubleshooting purposes only, it should not be used to
        cancel location in bulk
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '503':
          description: Service Unavailable
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/compatible/{bundle}:
    get:
      tags:
        - esims
      summary: Check eSIM and Bundle Compatibility
      description: >-
        This request is used to check that a specific bundle is compatible with
        an eSIM.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
        - name: bundle
          in: path
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/sms:
    post:
      tags:
        - esims
      summary: Send SMS to eSIM
      description: >
        SMS must be UTF-8 compliant; with a minimum length of 1, and maximum
        length of 160 characters.
        This defaults to `eSIM` and is the only supported value by default.
        Unique identifiers can be assigned to your Organisation on request.
        **Please contact your Account Manager to discuss this.**
        **Note:** Requires the eSIM to have an MSISDN
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                message: message
                from: eSIM
      security:
        - apikeyAuth: []
      parameters:
        - name: Content-Type
          in: header
          schema:
            type: string
          example: application/json
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/bundles/{name}/applications/{assignmentId}:
    delete:
      tags:
        - esims (Deprecated)
      summary: Revoke a specific Bundle Assignment from an eSIM (Deprecated)
      description: >
        Revokes a single assignment of a given Bundle type.
        e.g. Can remove 1 month from a 1-year Bundle.
        **Note:** Bundle names are case sensitive and should be typed like the
        following "esim_1GB_7D_IM_U".
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: type
          in: query
          schema:
            type: string
          description: >-
            type `validate` will provide options for the revoke and the
            behaviours, if any. type `transaction` will execute the revoke.
            Defaults to `transaction`
          example: validate
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
        - name: name
          in: path
          schema:
            type: string
          required: true
          description: >
            (Required) Name of Bundle
            Format as defined in [List Catalogue](/api/#get-/catalogue) API
            call.
            Example: `esim_10GB_30D_IM_U`
          example: <string>
        - name: assignmentId
          in: path
          schema:
            type: string
          required: true
          description: (Required) ID of individual Bundle Assignment to revoke from an eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                status: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/bundles/{name}/assignments/{assignmentId}:
    delete:
      tags:
        - esims
      summary: Revoke specific Bundle
      description: >
        **IMPORTANT:**
        If there are no bundles left on the eSIM AFTER the revoke, AND if the
        eSIM is not installed, the eSIM will undergo the eSIM Go returns
        process.
        The start of the returns process will immediately REMOVE the eSIM from
        your account - you will no longer be able to access it.
        After a minimum of 4 days: if during the returns process, the eSIM is
        now installed (e.g. by your end user), the eSIM will be returned to your
        account.
        If you DO NOT want the eSIM to be given back to eSIM Go, ensure the eSIM
        either:-
        - Is installed
        - Has more than 1 bundle on it at the time of revoking
        ---
        Revokes a single assignment of a given Bundle type.
        e.g. Can remove 1 month from a 1-year Bundle.
        **Note:** Bundle names are case sensitive and should be typed like the
        following "esim_1GB_7D_IM_U".
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: type
          in: query
          schema:
            type: string
          description: >-
            type `validate` will provide options for the revoke and the
            behaviours, if any. type `transaction` will execute the revoke.
            Defaults to `transaction`
          example: validate
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
        - name: name
          in: path
          schema:
            type: string
          required: true
          description: >
            (Required) Name of Bundle
            Format as defined in [List Catalogue](/api/#get-/catalogue) API
            call.
            Example: `esim_10GB_30D_IM_U`
          example: <string>
        - name: assignmentId
          in: path
          schema:
            type: string
          required: true
          description: (Required) ID of individual Bundle Assignment to revoke from an eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                status: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/bundles/{name}:
    get:
      tags:
        - esims
      summary: Get applied Bundle status
      description: >
        Provides details about an individual assignment of a Bundle applied to
        an eSIM.
        Remaining data can be found here.
        Each Bundle can have multiple assignments. e.g. a 1-year Bundle will
        have 12 assignments, each with their own start and finish dates
        Bundle Assignment States:
        - **Processing:**
          The bundle assignment is currently processing.
          This is usually instant but can, on occasion, take up to 10 minutes to complete.
          The eSIM can still be installed and will register on a network while the bundle is processing.
        - **Queued:**
          The bundle has been successfully assigned, has not been used yet, and is queued for use.
        - **Active:**
          The bundle has successfully been used.
          It has data remaining and is within the bundle duration.
        - **Depleted:**
          The bundle has no data remaining but is still within the bundle duration.
        - **Expired:**
          The bundle has expired, and the bundle duration has been exceeded.
        - **Revoked:**
          The bundle has been revoked, and is no longer on the esim.
        **Notes:**
        - If multiple of the same bundle are applied to a single eSIM, the
        status bundle with the latest assignment will be returned.
        - Bundle names are case sensitive and should be typed like the following
        "esim_1GB_7D_IM_U".
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
        - name: name
          in: path
          schema:
            type: string
          required: true
          description: >
            (Required) Name of Bundle
            Format as defined in [List Catalogue](/api/#get-/catalogue) API
            call.
            Example: `esim_10GB_30D_IM_U`
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                assignments:
                  - id: <string>
                    callTypeGroup: <string>
                    initialQuantity: <integer>
                    remainingQuantity: <integer>
                    startTime: <dateTime>
                    endTime: <dateTime>
                    bundleState: <string>
                    assignmentDateTime: <dateTime>
                    assignmentReference: <string>
                    unlimited: <boolean>
                  - id: <string>
                    callTypeGroup: <string>
                    initialQuantity: <integer>
                    remainingQuantity: <integer>
                    startTime: <dateTime>
                    endTime: <dateTime>
                    bundleState: <string>
                    assignmentDateTime: <dateTime>
                    assignmentReference: <string>
                    unlimited: <boolean>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
    delete:
      tags:
        - esims
      summary: Revoke applied Bundle
      description: >
        **IMPORTANT:**
        If there are no bundles left on the eSIM AFTER the revoke, AND if the
        eSIM is not installed, the eSIM will undergo the eSIM Go returns
        process.
        The start of the returns process will immediately REMOVE the eSIM from
        your account - you will no longer be able to access it.
        After a minimum of 4 days: if during the returns process, the eSIM is
        now installed (e.g. by your end user), the eSIM will be returned to your
        account.
        If you DO NOT want the eSIM to be given back to eSIM Go, ensure the eSIM
        either:-
        - Is installed
        - Has more than 1 bundle on it at the time of revoking
        ---
        Revokes latest assignment of a given Bundle type.
        If a bundle assignment has not been started and no data has been
        consumed, the bundle assignment can either be returned to the inventory
        or credited back to the organisations balance.
        If the bundle assignment has started, or was purchased outside of their
        permitted refund period, typically 60 days, it cannot be returned to the
        inventory or taken as a credit.
        **Note:** Bundle names are case sensitive and should be typed like the
        following "esim_1GB_7D_IM_U".
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: refundToBalance
          in: query
          schema:
            type: string
          description: >-
            If Applicable, refund the value of this bundle to organisation
            balance
          example: <boolean>
        - name: offerId
          in: query
          schema:
            type: string
          description: >-
            If Applicable, the offerId of the bundle to revoke. needed for
            refunding to balance
          example: <string>
        - name: type
          in: query
          schema:
            type: string
          description: >-
            type `validate` will provide options for the revoke and the
            behaviours, if any. type `transaction` will execute the revoke.
            Defaults to `transaction`
          example: validate
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
        - name: name
          in: path
          schema:
            type: string
          required: true
          description: >
            (Required) Name of Bundle
            Format as defined in [List Catalogue](/api/#get-/catalogue) API
            call.
            Example: `esim_10GB_30D_IM_U`
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                status: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/bundles:
    get:
      tags:
        - esims
      summary: List Bundles applied to eSIM
      description: |
        Provides details about the current Bundles applied to an eSIM.
        Remaining data can be found here.
        Each Bundle can have multiple assignments.
        Bundle Assignment States:
        - **Processing:**
          The bundle assignment is currently processing.
          This is usually instant but can, on occasion, take up to 10 minutes to complete.
          The eSIM can still be installed and will register on a network while the bundle is processing.
        - **Queued:**
          The bundle has been successfully assigned, has not been used yet, and is queued for use.
        - **Active:**
          The bundle has successfully been used.
          It has data remaining and is within the bundle duration.
        - **Depleted:**
          The bundle has no data remaining but is still within the bundle duration.
        - **Expired:**
          The bundle has expired, and the bundle duration has been exceeded.
        - **Revoked:**
          The bundle has been revoked, and is no longer on the esim.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: includeUsed
          in: query
          schema:
            type: string
          description: |
            Include used & expired Bundles
            Backward compatibility for v2.1
          example: <boolean>
        - name: limit
          in: query
          schema:
            type: string
          description: >
            Number of assignments to return. Must be between 1 and 200. Default
            is 15
          example: <integer>
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                bundles:
                  - name: <string>
                    assignments:
                      - id: <string>
                        callTypeGroup: <string>
                        initialQuantity: <integer>
                        remainingQuantity: <integer>
                        startTime: <dateTime>
                        endTime: <dateTime>
                        bundleState: <string>
                        assignmentDateTime: <dateTime>
                        assignmentReference: <string>
                        unlimited: <boolean>
                      - id: <string>
                        callTypeGroup: <string>
                        initialQuantity: <integer>
                        remainingQuantity: <integer>
                        startTime: <dateTime>
                        endTime: <dateTime>
                        bundleState: <string>
                        assignmentDateTime: <dateTime>
                        assignmentReference: <string>
                        unlimited: <boolean>
                  - name: <string>
                    assignments:
                      - id: <string>
                        callTypeGroup: <string>
                        initialQuantity: <integer>
                        remainingQuantity: <integer>
                        startTime: <dateTime>
                        endTime: <dateTime>
                        bundleState: <string>
                        assignmentDateTime: <dateTime>
                        assignmentReference: <string>
                        unlimited: <boolean>
                      - id: <string>
                        callTypeGroup: <string>
                        initialQuantity: <integer>
                        remainingQuantity: <integer>
                        startTime: <dateTime>
                        endTime: <dateTime>
                        bundleState: <string>
                        assignmentDateTime: <dateTime>
                        assignmentReference: <string>
                        unlimited: <boolean>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
    post:
      tags:
        - esims (Deprecated)
      summary: Apply a Bundle to an eSIM (Deprecated)
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                name: <string>
                startTime: <string>
                repeat: <integer>
      security:
        - apikeyAuth: []
      parameters:
        - name: Content-Type
          in: header
          schema:
            type: string
          example: application/json
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                status: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}/location:
    get:
      tags:
        - esims
      summary: Get eSIM Location
      description: Returns the last known location and operator for a given eSIM.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: path
          schema:
            type: string
          required: true
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                mobileNetworkCode: <string>
                networkName: <string>
                country: <string>
                lastSeen: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims/{iccid}:
    get:
      tags:
        - esims
      summary: Get eSIM details
      description: |
        Receive eSIM details for an ICCID
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: additionalFields
          in: query
          schema:
            type: string
          example: appleInstallUrl
        - name: additionalFields
          in: query
          schema:
            type: string
          example: appleInstallUrl
        - name: iccid
          in: path
          schema:
            type: string
          required: true
          description: (Required) The ICCID of the eSIM
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                iccid: <string>
                matchingId: <string>
                smdpAddress: <string>
                profileStatus: Released
                pin: <string>
                puk: <string>
                firstInstalledDateTime: <dateTime>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /esims:
    get:
      tags:
        - esims
      summary: List eSIMs
      description: |
        Returns all eSIMs currently assigned to your organisation.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: page
          in: query
          schema:
            type: string
          description: Page of ESIMs to return
          example: <string>
        - name: perPage
          in: query
          schema:
            type: integer
          description: Number of ESIMs to return per page
          example: '50'
        - name: direction
          in: query
          schema:
            type: string
          description: Direction of ordering
          example: asc
        - name: orderBy
          in: query
          schema:
            type: string
          description: Name of column to order by
          example: iccid
        - name: filterBy
          in: query
          schema:
            type: string
          description: >-
            Name of column to filter by. eSIMs can be filtered by ICCID,
            Customer Reference, Last Action (Bundle Refund, Bundle Applied,
            Bundle Revoked, eSIM Updated, eSIM Refreshed, eSIM Utilisation
            Alert), Last Action Date and SIM Assignment Date.
          example: iccid, customerRef, lastAction, actionDate, assignedDate
        - name: filter
          in: query
          schema:
            type: string
          description: Value to filter by
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                esims:
                  - iccid: <string>
                    customerRef: <string>
                    lastAction: <string>
                    actionDate: <string>
                    physical: <boolean>
                    assignedDate: <string>
                  - iccid: <string>
                    customerRef: <string>
                    lastAction: <string>
                    actionDate: <string>
                    physical: <boolean>
                    assignedDate: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
    put:
      tags:
        - esims
      summary: Update eSIM Details
      description: |
        Update sim details
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                iccid: <string>
                customerRef: <string>
      security:
        - apikeyAuth: []
      parameters:
        - name: Content-Type
          in: header
          schema:
            type: string
          example: application/json
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: iccid
          in: query
          schema:
            type: string
          description: (Required) ICCID of eSIM
          example: <string>
        - name: customerRef
          in: query
          schema:
            type: string
          description: (Required) New Customer Reference
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /organisation/balance:
    post:
      tags:
        - organisation
      summary: Topup Organisation Balance
      description: >
        Update the pre-payed balance held by your organisation.
        Initial payment is done using the Portal: https://portal.esim-go.com/.
        This will store your card details for future use.
        Follow up payments can be done using the API.
      requestBody:
        content: {}
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: amount
          in: query
          schema:
            type: string
          description: (Required) The amount of to be charged to the saved card
          example: <integer>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                amount: <integer>
                balance: <integer>
                ref: <integer>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '503':
          description: Service Unavailable
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /organisation/groups:
    get:
      tags:
        - organisation
      summary: Get Bundle Groups
      description: >
        Bundles are grouped into categories. This returns a list of the groups
        of Bundles available for your Organisation to order.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                - name: <string>
                - name: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /organisation:
    get:
      tags:
        - organisation
      summary: Get Current Organisation Details
      description: Get details of your Organisation including all users
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                organisations:
                  - name: <string>
                    apiKey: <string>
                    taxLiable: <string>
                    addr1: <string>
                    addr2: <string>
                    city: <string>
                    country: <string>
                    postcode: <string>
                    callbackUrl: <string>
                    notes: <string>
                    groups:
                      - <string>
                      - <string>
                    currency: <string>
                    balance: <integer>
                    testCredit: <integer>
                    testCreditExpiry: <string>
                    businessType: <string>
                    website: <string>
                    productDescription: <string>
                    users:
                      - firstName: <string>
                        lastName: <string>
                        role: <string>
                        emailAddress: <string>
                        phoneNumber: <string>
                        timeZone: <string>
                      - firstName: <string>
                        lastName: <string>
                        role: <string>
                        emailAddress: <string>
                        phoneNumber: <string>
                        timeZone: <string>
                  - name: <string>
                    apiKey: <string>
                    taxLiable: <string>
                    addr1: <string>
                    addr2: <string>
                    city: <string>
                    country: <string>
                    postcode: <string>
                    callbackUrl: <string>
                    notes: <string>
                    groups:
                      - <string>
                      - <string>
                    currency: <string>
                    balance: <integer>
                    testCredit: <integer>
                    testCreditExpiry: <string>
                    businessType: <string>
                    website: <string>
                    productDescription: <string>
                    users:
                      - firstName: <string>
                        lastName: <string>
                        role: <string>
                        emailAddress: <string>
                        phoneNumber: <string>
                        timeZone: <string>
                      - firstName: <string>
                        lastName: <string>
                        role: <string>
                        emailAddress: <string>
                        phoneNumber: <string>
                        timeZone: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /orders/{orderReference}:
    get:
      tags:
        - orders
      summary: Get order detail
      description: |
        Get details on an order, including total cost and contents
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: orderReference
          in: path
          schema:
            type: string
          required: true
          description: (Required) Reference for your order
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                order:
                  - type: <string>
                    item: <string>
                    quantity: <integer>
                    subTotal: <integer>
                    pricePerUnit: <integer>
                  - type: <string>
                    item: <string>
                    quantity: <integer>
                    subTotal: <integer>
                    pricePerUnit: <integer>
                total: <integer>
                currency: <string>
                status: <string>
                statusMessage: <string>
                orderReference: <string>
                createDate: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /orders:
    get:
      tags:
        - orders
      summary: List orders
      description: >
        Get details on all previous orders, including total cost and contents.
        Response data is paginated.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: includeIccids
          in: query
          schema:
            type: boolean
          description: >
            Set to true to include eSIM data (ICCID, Matching ID and SMDP
            Address) in the response, and an ICCIDs array.
            Note: From v2.3.0 onwards, this data will be included by default.
          example: 'true'
        - name: page
          in: query
          schema:
            type: integer
          description: |
            Page number to return.
          example: '1'
        - name: limit
          in: query
          schema:
            type: integer
          description: |
            Number of results to return per page.
          example: '10'
        - name: createdAt
          in: query
          schema:
            type: string
          description: >
            Specifies the date range for filtering orders. This parameter has a
            'lte:' prefix to specify the end date.
            For example, to query orders from March 1, 2024, to March 31, 2024,
            use the following format:
            `createdAt=gte:2024-03-01T00:00:00.000Z&createdAt=lte:2024-03-31T23:59:59.999Z`.
          example: <dateTime>
        - name: createdAt
          in: query
          schema:
            type: string
          description: >
            Specifies the date range for filtering orders. This parameter has a
            'lte:' prefix to specify the end date.
            For example, to query orders from March 1, 2024, to March 31, 2024,
            use the following format:
            `createdAt=gte:2024-03-01T00:00:00.000Z&createdAt=lte:2024-03-31T23:59:59.999Z`.
          example: <dateTime>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                - order:
                    - type: <string>
                      item: <string>
                      quantity: <integer>
                      subTotal: <integer>
                      pricePerUnit: <integer>
                      invoiceLink: <string>
                    - type: <string>
                      item: <string>
                      quantity: <integer>
                      subTotal: <integer>
                      pricePerUnit: <integer>
                      invoiceLink: <string>
                  total: <integer>
                  currency: <string>
                  status: <string>
                  statusMessage: <string>
                  orderReference: <string>
                  createDate: <string>
                - order:
                    - type: <string>
                      item: <string>
                      quantity: <integer>
                      subTotal: <integer>
                      pricePerUnit: <integer>
                      invoiceLink: <string>
                    - type: <string>
                      item: <string>
                      quantity: <integer>
                      subTotal: <integer>
                      pricePerUnit: <integer>
                      invoiceLink: <string>
                  total: <integer>
                  currency: <string>
                  status: <string>
                  statusMessage: <string>
                  orderReference: <string>
                  createDate: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
    post:
      tags:
        - orders
      summary: Create orders
      description: >
        Orders can be validated and processed using this endpoint.
        Total will be deducted from your Organisation's balance.
        **Auto-assign**
        By specifying ICCID(s) of eSIM(s) belonging to your Organisation and
        setting 'assign' to true, a bundle can be automatically assigned to
        eSIM(s)
        Bundle assignments to an eSIM are usually instant but please allow for
        up to 10 minutes for the bundle to fully process. While the bundle is
        processing the eSIM can be successfully installed and the eSIM will
        register onto a network if within coverage.
        The Bundle Status can be checked through [Get the Status of a bundle
        assigned to an
        eSIM](https://docs.esim-go.com/api/#get-/esims/-iccid-/bundles/-name-)
        **Usage:**
        * eSIM ICCIDs can only be specifed if assign is set to true
        * If assign is set to true, but no ICCIDs are provided, bundles are
        assigned to new eSIMs
        * If ICCIDs are provided, quantity is required to match the number of
        ICCIDs for each bundle
        * If quantity is specified and assign is set to false, the quantity of
        that bundle is purchased into inventory
        **Note:** In some cases, it may take up to 5 minutes for your eSIM
        bundles to be delivered
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                type: validate
                assign: <boolean>
                Order:
                  - type: bundle
                    quantity: <integer>
                    item: <string>
                    iccids:
                      - <string>
                      - <string>
                    allowReassign: <boolean>
                  - type: bundle
                    quantity: <integer>
                    item: <string>
                    iccids:
                      - <string>
                      - <string>
                    allowReassign: <boolean>
      security:
        - apikeyAuth: []
      parameters:
        - name: Content-Type
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: string
              example: ''
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: string
              example: ''
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                type: string
              example: ''
        '503':
          description: Service Unavailable
          content:
            text/plain:
              schema:
                type: string
              example: ''
  /inventory/refund:
    post:
      tags:
        - inventory
      summary: Refund bundle from inventory
      description: >
        Refunds an item in the inventory to the organisations balance.
        Takes a usageId and a quantity. The usageId's can be found by querying
        the /inventory endpoint
        The quantity of a refund cannot exceed the remaining quantity left for
        the specific usageId. If you wish to refund multiple usageId's, multiple
        calls to this endpoint will need to be done.
        If a bundle assignment has not been started and no data has been
        consumed, the bundle can be refunded as a credit back to the
        organisations balance.
        If the bundle assignment has started, or was purchased outside of their
        permitted refund period, typically 60 days, it cannot be refunded.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              example:
                usageId: <integer>
                quantity: <integer>
      parameters:
        - name: Content-Type
          in: header
          schema:
            type: string
          example: application/json
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /inventory:
    get:
      tags:
        - inventory
      summary: Get bundle inventory
      description: >
        All of your Organisation's currently purchased Bundles and their
        remaining usages.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                bundles:
                  - name: <string>
                    desc: <string>
                    available:
                      - id: <integer>
                        total: <integer>
                        remaining: <integer>
                        expiry: <string>
                      - id: <integer>
                        total: <integer>
                        remaining: <integer>
                        expiry: <string>
                    countries:
                      - <string>
                      - <string>
                    data: <integer>
                    duration: <integer>
                    durationUnit: <string>
                    autostart: <boolean>
                    unlimited: <boolean>
                    speed:
                      - <string>
                      - <string>
                  - name: <string>
                    desc: <string>
                    available:
                      - id: <integer>
                        total: <integer>
                        remaining: <integer>
                        expiry: <string>
                      - id: <integer>
                        total: <integer>
                        remaining: <integer>
                        expiry: <string>
                    countries:
                      - <string>
                      - <string>
                    data: <integer>
                    duration: <integer>
                    durationUnit: <string>
                    autostart: <boolean>
                    unlimited: <boolean>
                    speed:
                      - <string>
                      - <string>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /catalogue/bundle/{name}:
    get:
      tags:
        - catalogue
      summary: Get Bundle details from catalogue
      description: Get details of a specific Bundle from your Organisation's catalogue
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: name
          in: path
          schema:
            type: string
          required: true
          description: (Required) Name of Bundle Group to get countries for
          example: <string>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                name: <string>
                description: <string>
                countries:
                  - name: <string>
                    region: <string>
                    iso: <string>
                  - name: <string>
                    region: <string>
                    iso: <string>
                dataAmount: <integer>
                duration: <integer>
                speed:
                  - <string>
                  - <string>
                autostart: <boolean>
                unlimited: <boolean>
                roamingEnabled:
                  - name: <string>
                    region: <string>
                    iso: <string>
                  - name: <string>
                    region: <string>
                    iso: <string>
                price: <integer>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /catalogue:
    get:
      tags:
        - catalogue
      summary: Get Bundle catalogue
      description: |
        List all Bundles available to your Organisation for ordering.
        Bundle names can be used with the `/orders` endpoint to place an order.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: page
          in: query
          schema:
            type: string
          description: Page of Bundles to return
          example: <string>
        - name: perPage
          in: query
          schema:
            type: integer
          description: Number of Bundles to return per page
          example: '50'
        - name: direction
          in: query
          schema:
            type: string
          description: Direction of ordering
          example: asc
        - name: orderBy
          in: query
          schema:
            type: string
          description: Name of column to order by
          example: duration
        - name: description
          in: query
          schema:
            type: string
          description: Wildcard search for description
          example: <string>
        - name: group
          in: query
          schema:
            type: string
          description: Filter by Bundle Group (exact value) e.g. `Standard eSIM Bundles`
          example: <string>
        - name: countries
          in: query
          schema:
            type: string
          description: >-
            Comma-separated list of country ISO codes to filter by. This will
            search for Bundles that include at least one of the countries as
            their base country. e.g. `GB, US`
          example: <string>
        - name: region
          in: query
          schema:
            type: string
          description: >-
            This will return Bundles that have a base country in the specified
            region. e.g. `Europe`
          example: Antarctica
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                - name: <string>
                  description: <string>
                  groups:
                    - <string>
                    - <string>
                  countries:
                    - name: <string>
                      region: <string>
                      iso: <string>
                    - name: <string>
                      region: <string>
                      iso: <string>
                  dataAmount: <integer>
                  duration: <integer>
                  speed:
                    - <string>
                    - <string>
                  autostart: <boolean>
                  unlimited: <boolean>
                  roamingEnabled:
                    - name: <string>
                      region: <string>
                      iso: <string>
                    - name: <string>
                      region: <string>
                      iso: <string>
                  price: <integer>
                - name: <string>
                  description: <string>
                  groups:
                    - <string>
                    - <string>
                  countries:
                    - name: <string>
                      region: <string>
                      iso: <string>
                    - name: <string>
                      region: <string>
                      iso: <string>
                  dataAmount: <integer>
                  duration: <integer>
                  speed:
                    - <string>
                    - <string>
                  autostart: <boolean>
                  unlimited: <boolean>
                  roamingEnabled:
                    - name: <string>
                      region: <string>
                      iso: <string>
                    - name: <string>
                      region: <string>
                      iso: <string>
                  price: <integer>
        '400':
          description: Bad Request
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '403':
          description: Forbidden
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
        '500':
          description: Internal Server Error
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example:
                message: <string>
  /networks:
    get:
      tags:
        - networks
      summary: Get Country Network Data
      description: >
        This endpoint is used to return the networks for a country/countries
        searched for either by an array of countires or ISO codes (ISOs).
        Alternatively, it can be toggled to return all countries and their
        networks.
        Please refer to the rate sheet, availible to download in the eSIM Go
        Management Portal for a full list of country names and ISO codes.
      security:
        - apikeyAuth: []
      parameters:
        - name: Accept
          in: header
          schema:
            type: string
          example: application/json
        - name: countries
          in: query
          schema:
            type: string
          description: List of Countries e.g. United Kingdom,United States
          example: <string>
        - name: isos
          in: query
          schema:
            type: string
          description: List of ISOs e.g. GB,US
          example: <string>
        - name: returnAll
          in: query
          schema:
            type: string
          description: Used to toggle returning of all Countries e.g. true/false
          example: <boolean>
      responses:
        '200':
          description: OK
          headers:
            Content-Type:
              schema:
                type: string
                example: application/json
          content:
            application/json:
              schema:
                type: object
              example: null
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                type: string
              example: ''
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                type: string
              example: ''