Soracom Sandbox API

Soracom Sandbox API for safely exercising platform workflows. Lets developers create test coupons, fake SIMs, and dummy subscriber records, then run normal API calls against the sandbox endpoint without billing.

Soracom Sandbox API is one of 18 APIs that Soracom publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include IoT, Sandbox, and Testing. The published artifact set on APIs.io includes an OpenAPI specification.

OpenAPI Specification

soracom-sandbox-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  description: SORACOM SANDBOX API v1
  title: SORACOM SANDBOX API
  version: 20230923-005714
servers:
- url: https://api-sandbox.soracom.io/v1
paths:
  /sandbox/coupons/create:
    post:
      description: Creates a coupon.
      operationId: sandboxCreateCoupon
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandboxCreateCouponRequest'
        description: request
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandboxCreateCouponResponse'
          description: OK
        "400":
          description: Request is not correct.
      security:
      - api_key: []
        api_token: []
      summary: Creates a coupon
      tags:
      - 'API Sandbox: Coupon'
      x-soracom-cli:
      - sandbox coupons create
  /sandbox/init:
    post:
      description: Performs complex signup process at once, including registering
        dummy payment method. Specify `email` and `password` for an operator which
        will be created on sandbox, `authKeyId` and `authKey` for a real operator
        on the production environment. An API Key and an API Token will be included
        in the response if successful. Use the API Key and the API Token to requests
        afterwards.
      operationId: sandboxInitializeOperator
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandboxInitRequest'
        description: request
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandboxAuthResponse'
          description: Successfully created a sandbox operator.
        "400":
          description: Email address, AuthKeyId, or AuthKey is not correct.
      summary: Creates an operator account
      tags:
      - 'API Sandbox: Operator'
      x-soracom-cli:
      - sandbox init
  /sandbox/operators/{operator_id}:
    delete:
      description: Deletes the specified operator.
      operationId: sandboxDeleteOperator
      parameters:
      - description: Operator ID
        in: path
        name: operator_id
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
        "400":
          description: Operator does not exist.
      security:
      - api_key: []
        api_token: []
      summary: Deletes an operator
      tags:
      - 'API Sandbox: Operator'
      x-soracom-cli:
      - sandbox operators delete
  /sandbox/operators/token/{email}:
    post:
      description: Retrieves a 'signup token' for registration confirmation. Please
        specify a pair of AuthKeyId and AuthKey of a SAM user on the production environment
        to check if the caller has a valid account on it.
      operationId: sandboxGetSignupToken
      parameters:
      - description: Email
        in: path
        name: email
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandboxGetSignupTokenRequest'
        description: Authentication request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandboxGetSignupTokenResponse'
          description: Successfully retrieved signup token.
        "400":
          description: Email address, AuthKeyId, or AuthKey is not correct.
      summary: Gets a signup token
      tags:
      - 'API Sandbox: Operator'
      x-soracom-cli:
      - sandbox operators get-signup-token
  /sandbox/orders/ship:
    post:
      description: Changes the shipping status to 'shipped' and gets ready the subscribers
        included in the order.
      operationId: sandboxShipOrder
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandboxShipOrderRequest'
        description: Shipping request
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Order does not exist.
      security:
      - api_key: []
        api_token: []
      summary: Ships the specified order
      tags:
      - 'API Sandbox: Order'
      x-soracom-cli:
      - sandbox orders ship
  /sandbox/stats/air/subscribers/{imsi}:
    post:
      description: Populates Air stats for testing purpose. Inserted data are going
        to be automatically accumulated. It is not possible to put the data multiple
        times with the same timestamp.
      operationId: sandboxInsertAirStats
      parameters:
      - description: IMSI.
        in: path
        name: imsi
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandboxInsertAirStatsRequest'
        description: The Air stats (up/down bytes of data) with specified timestamp.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Data with the same timestamp already exists.
      security:
      - api_key: []
        api_token: []
      summary: Inserts Air stats for testing
      tags:
      - 'API Sandbox: Stats'
      x-soracom-cli:
      - sandbox stats air insert
  /sandbox/stats/beam/subscribers/{imsi}:
    post:
      description: Populates Beam stats for testing purpose. Inserted data are going
        to be automatically accumulated. It is not possible to put the data multiple
        times with the same timestamp.
      operationId: sandboxInsertBeamStats
      parameters:
      - description: IMSI.
        in: path
        name: imsi
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sandboxInsertBeamStatsRequest'
        description: The Beam stats (number of requests) with specified timestamp.
        required: true
      responses:
        "200":
          description: OK
        "400":
          description: Data with the same timestamp already exists.
      security:
      - api_key: []
        api_token: []
      summary: Inserts Beam stats for testing
      tags:
      - 'API Sandbox: Stats'
      x-soracom-cli:
      - sandbox stats beam insert
  /sandbox/subscribers/create:
    post:
      description: Creates a new subscriber for sandbox.
      operationId: sandboxCreateSubscriber
      requestBody:
        content:
          application/json:
            examples:
              Creating "plan-D (D-300MB)":
                value:
                  bundle:
                  - D-300MB
                  subscription: plan-D
              Creating "plan01s":
                value:
                  subscription: plan01s
            schema:
              $ref: '#/components/schemas/sandboxCreateSubscriberRequest'
        description: Create request
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/sandboxCreateSubscriberResponse'
          description: OK
      security:
      - api_key: []
        api_token: []
      summary: Creates a new subscriber for sandbox
      tags:
      - 'API Sandbox: Subscriber'
      x-soracom-cli:
      - sandbox subscribers create
components:
  schemas:
    TagSet:
      additionalProperties:
        type: string
      type: object
    sandboxAuthResponse:
      properties:
        apiKey:
          type: string
        operatorId:
          type: string
        token:
          type: string
        userName:
          type: string
      type: object
    sandboxBeamCounts:
      properties:
        count:
          format: int64
          type: integer
      type: object
    sandboxCreateCouponRequest:
      properties:
        amount:
          example: 1000
          format: int32
          type: integer
        applicableBillItemName:
          enum:
          - dailyDataTrafficChargeTotal
          - dailyChargeTotal
          - dailySoracomBeamRequestChargeTotal
          example: dailyDataTrafficChargeTotal
          type: string
        expiryYearMonth:
          format: yyyyMM
          type: string
      type: object
    sandboxCreateCouponResponse:
      properties:
        amount:
          description: Coupon amount.
          format: double
          type: number
        balance:
          description: Balance.
          format: double
          type: number
        billItemName:
          description: Bill Item.
          type: string
        couponCode:
          description: Coupon code.
          type: string
        expiryYearMonth:
          description: Year and month of expiration.
          format: yyyyMM
          type: string
      type: object
    sandboxCreateSubscriberRequest:
      properties:
        bundles:
          description: 'Bundle. If necessary, specify one of:'
          items:
            enum:
            - X3-5MB
            - D-300MB
            - DU-10GB
            - DU-50GB
            - DU-100GB
            - K2-300MB
            type: string
          type: array
        subscription:
          description: 'Subscription. Specify one of:'
          enum:
          - plan01s
          - plan01s-low_data_volume
          - planP1
          - planX3
          - plan-D
          - plan-K
          - plan-KM1
          - plan-DU
          - plan-K2
          type: string
      type: object
    sandboxCreateSubscriberResponse:
      properties:
        apn:
          type: string
        createdAt:
          format: int64
          type: integer
        expiryTime:
          format: int64
          type: integer
        imsi:
          type: string
        ipAddress:
          type: string
        lastModifiedAt:
          format: int64
          type: integer
        msisdn:
          type: string
        operatorId:
          type: string
        registrationSecret:
          type: string
        serialNumber:
          type: string
        speedClass:
          type: string
        status:
          type: string
        subscription:
          type: string
        tags:
          $ref: '#/components/schemas/TagSet'
      type: object
    sandboxDataTrafficStats:
      properties:
        downloadByteSizeTotal:
          format: int64
          type: integer
        downloadPacketSizeTotal:
          format: int64
          type: integer
        uploadByteSizeTotal:
          format: int64
          type: integer
        uploadPacketSizeTotal:
          format: int64
          type: integer
      type: object
    sandboxGetSignupTokenRequest:
      properties:
        authKey:
          type: string
        authKeyId:
          type: string
      type: object
    sandboxGetSignupTokenResponse:
      properties:
        token:
          type: string
      required:
      - token
      type: object
    sandboxInitRequest:
      properties:
        authKey:
          type: string
        authKeyId:
          type: string
        coverageTypes:
          description: |
            Coverage type.
            - `g`: Global coverage
            - `jp`: Japan coverage
          items:
            enum:
            - g
            - jp
            type: string
          type: array
        email:
          type: string
        password:
          type: string
        registerPaymentMethod:
          default: true
          type: boolean
      required:
      - email
      - password
      - authKeyId
      - authKey
      type: object
    sandboxInsertAirStatsRequest:
      properties:
        dataTrafficStatsMap:
          additionalProperties:
            $ref: '#/components/schemas/sandboxDataTrafficStats'
          description: |
            Test data for each speed class, including data for both upload and download, with timestamps. Specify a string representing the speed class as a key.

            - `s1.minimum`
            - `s1.slow`
            - `s1.standard`
            - `s1.fast`
            - `s1.4xfast`
            - `s1.8xfast`
            - `u1.standard`
            - `u1.slow`
            - `t1.standard`
            - `arc.standard`
          type: object
        unixtime:
          description: UNIX time (in seconds).
          format: int64
          type: integer
      type: object
    sandboxInsertBeamStatsRequest:
      properties:
        beamStatsMap:
          properties:
            inHttp:
              $ref: '#/components/schemas/sandboxBeamCounts'
            inMqtt:
              $ref: '#/components/schemas/sandboxBeamCounts'
            inTcp:
              $ref: '#/components/schemas/sandboxBeamCounts'
            inUdp:
              $ref: '#/components/schemas/sandboxBeamCounts'
            outHttp:
              $ref: '#/components/schemas/sandboxBeamCounts'
            outHttps:
              $ref: '#/components/schemas/sandboxBeamCounts'
            outMqtt:
              $ref: '#/components/schemas/sandboxBeamCounts'
            outMqtts:
              $ref: '#/components/schemas/sandboxBeamCounts'
            outTcp:
              $ref: '#/components/schemas/sandboxBeamCounts'
            outTcps:
              $ref: '#/components/schemas/sandboxBeamCounts'
            outUdp:
              $ref: '#/components/schemas/sandboxBeamCounts'
          type: object
        unixtime:
          description: UNIX time (in seconds).
          format: int64
          type: integer
      type: object
    sandboxShipOrderRequest:
      properties:
        operatorId:
          type: string
        orderId:
          type: string
      required:
      - orderId
      - operatorId
      type: object
tags:
- name: 'API Sandbox: Coupon'
- name: 'API Sandbox: Operator'
- name: 'API Sandbox: Order'
- name: 'API Sandbox: Stats'
- name: 'API Sandbox: Subscriber'