Onomondo SIMs API

List, find, retrieve, and update SIMs across an IoT fleet, including activation state, data limits, network lists, IMEI lock, supported technologies, and tag assignment (single and bulk).

OpenAPI Specification

onomondo-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Onomondo API
  description: >-
    HTTP RESTful API for the Onomondo IoT cellular-connectivity platform.
    Resource-oriented URLs with standard HTTP verbs, JSON request/response
    bodies, and Bearer API-key authentication. Served exclusively over TLS
    (HTTPS). Use it to manage SIMs, usage, network lists, SMS, webhooks,
    connectors, and tags across a global IoT fleet.
  termsOfService: https://onomondo.com/legal/
  contact:
    name: Onomondo Support
    url: https://onomondo.com/contact/
  version: '1.0'
servers:
  - url: https://api.onomondo.com
    description: Onomondo production API
security:
  - apiKey: []
tags:
  - name: SIMs
    description: Manage and inspect SIMs in your fleet.
  - name: Usage
    description: Retrieve data usage for SIMs and tags.
  - name: SMS
    description: Send SMS to devices and retrieve SMS usage.
  - name: Network Lists
    description: Manage network allow-lists (whitelists) of MCC/MNC entries.
  - name: Webhooks
    description: Subscribe to SIM events delivered as HTTP POST callbacks.
  - name: Connectors
    description: Manage cloud connectors that forward device traffic.
  - name: Tags
    description: Search organization tags used to group SIMs.
paths:
  /sims:
    get:
      operationId: listSims
      tags:
        - SIMs
      summary: Retrieve information for all SIMs
      description: Returns information for all SIMs connected to the organization.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: A list of SIM objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Sim'
  /sims/find:
    get:
      operationId: findSims
      tags:
        - SIMs
      summary: Find SIMs
      description: >-
        Retrieves a list of SIMs filtered by partial SIM ID, label, or exact
        ICCID match.
      parameters:
        - name: query
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: A list of matching SIM objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Sim'
  /sims/bulk:
    patch:
      operationId: updateSimsBulk
      tags:
        - SIMs
      summary: Update multiple SIMs
      description: >-
        Updates configuration parameters for multiple SIMs (maximum 20 per
        call).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              maxItems: 20
              items:
                $ref: '#/components/schemas/SimUpdate'
      responses:
        '200':
          description: SIMs updated.
  /sims/{sim_id}:
    parameters:
      - $ref: '#/components/parameters/SimId'
    get:
      operationId: getSim
      tags:
        - SIMs
      summary: Retrieve information for a specific SIM
      responses:
        '200':
          description: A SIM object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sim'
        '404':
          description: SIM not found.
    patch:
      operationId: updateSim
      tags:
        - SIMs
      summary: Update a SIM
      description: Updates configurable parameters for the specified SIM.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimUpdate'
      responses:
        '200':
          description: SIM updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Sim'
  /sims/{sim_id}/tags/{tag_id}:
    parameters:
      - $ref: '#/components/parameters/SimId'
      - $ref: '#/components/parameters/TagId'
    put:
      operationId: addTagToSim
      tags:
        - SIMs
      summary: Add a Tag to a SIM
      responses:
        '200':
          description: Tag added to SIM.
    delete:
      operationId: removeTagFromSim
      tags:
        - SIMs
      summary: Remove a Tag from a SIM
      responses:
        '200':
          description: Tag removed from SIM.
  /usage:
    get:
      operationId: getUsage
      tags:
        - Usage
      summary: Retrieve usage for all SIMs
      description: >-
        Retrieves all usage associated with all SIMs connected to the
        account/organization.
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - name: filter
          in: query
          schema:
            type: string
        - name: group
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Usage records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Usage'
  /usage/{sim_id}:
    parameters:
      - $ref: '#/components/parameters/SimId'
    get:
      operationId: getSimUsage
      tags:
        - Usage
      summary: Retrieve usage for a specific SIM
      responses:
        '200':
          description: Usage records for the SIM.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Usage'
  /usage/tag-total/{tag_id}:
    parameters:
      - $ref: '#/components/parameters/TagId'
    get:
      operationId: getTagTotalUsage
      tags:
        - Usage
      summary: Retrieve total usage by Tag
      description: >-
        Retrieves aggregated usage for all SIMs associated with the given Tag.
      responses:
        '200':
          description: Aggregated usage for the Tag.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Usage'
  /sms/usage/:
    get:
      operationId: getSmsUsageAll
      tags:
        - SMS
      summary: Retrieve SMS usage for all SIMs
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - name: timestamp
          in: query
          schema:
            type: string
            format: date
        - name: order
          in: query
          schema:
            type: string
            enum: [ASC, DESC]
            default: DESC
      responses:
        '200':
          description: SMS usage records.
  /sms/usage/{sim_id}:
    parameters:
      - $ref: '#/components/parameters/SimId'
    get:
      operationId: getSmsUsageForSim
      tags:
        - SMS
      summary: Retrieve SMS usage for a specific SIM
      parameters:
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
        - name: timestamp
          in: query
          schema:
            type: string
            format: date
        - name: order
          in: query
          schema:
            type: string
            enum: [ASC, DESC]
            default: DESC
      responses:
        '200':
          description: SMS usage records for the SIM.
  /sms/{sim_id}:
    parameters:
      - $ref: '#/components/parameters/SimId'
    post:
      operationId: sendSms
      tags:
        - SMS
      summary: Send SMS to a device
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SendSmsRequest'
      responses:
        '200':
          description: SMS accepted for delivery.
  /network-whitelists:
    get:
      operationId: listNetworkLists
      tags:
        - Network Lists
      summary: Retrieve all Network Lists
      responses:
        '200':
          description: A list of Network List objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NetworkList'
    post:
      operationId: createNetworkList
      tags:
        - Network Lists
      summary: Create a Network List
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkList'
      responses:
        '200':
          description: Network List created.
  /network-whitelists/{network_whitelist_name}:
    parameters:
      - name: network_whitelist_name
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getNetworkList
      tags:
        - Network Lists
      summary: Retrieve a specific Network List
      responses:
        '200':
          description: A Network List object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NetworkList'
    patch:
      operationId: updateNetworkList
      tags:
        - Network Lists
      summary: Update a Network List
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NetworkList'
      responses:
        '200':
          description: Network List updated.
    delete:
      operationId: deleteNetworkList
      tags:
        - Network Lists
      summary: Delete a Network List
      description: All SIM mappings must be removed before deletion.
      responses:
        '200':
          description: Network List deleted.
  /webhooks:
    get:
      operationId: listWebhooks
      tags:
        - Webhooks
      summary: Retrieve all webhooks
      responses:
        '200':
          description: A list of webhook objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Webhook'
    post:
      operationId: createWebhook
      tags:
        - Webhooks
      summary: Create a webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Webhook'
      responses:
        '200':
          description: Webhook created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
  /webhooks/{webhook_id}:
    parameters:
      - name: webhook_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getWebhook
      tags:
        - Webhooks
      summary: Retrieve a specific webhook
      responses:
        '200':
          description: A webhook object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
    patch:
      operationId: updateWebhook
      tags:
        - Webhooks
      summary: Update a webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Webhook'
      responses:
        '200':
          description: Webhook updated.
    delete:
      operationId: deleteWebhook
      tags:
        - Webhooks
      summary: Delete a webhook
      responses:
        '200':
          description: Webhook deleted.
  /connectors:
    get:
      operationId: listConnectors
      tags:
        - Connectors
      summary: Retrieve all Connectors
      description: Returns information for all registered Connectors (Enterprise package).
      responses:
        '200':
          description: A list of Connector objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Connector'
    post:
      operationId: createConnector
      tags:
        - Connectors
      summary: Create a Connector
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Connector'
      responses:
        '200':
          description: Connector created.
  /connectors/{connector_name}:
    parameters:
      - name: connector_name
        in: path
        required: true
        schema:
          type: string
    patch:
      operationId: updateConnector
      tags:
        - Connectors
      summary: Update a Connector
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Connector'
      responses:
        '200':
          description: Connector updated.
    delete:
      operationId: deleteConnector
      tags:
        - Connectors
      summary: Delete a Connector
      description: All mappings to the Connector must be removed first.
      responses:
        '200':
          description: Connector deleted.
  /tags/search/tags:
    get:
      operationId: searchTags
      tags:
        - Tags
      summary: Search Tags
      description: >-
        Returns Tags for the organization. Tags are created and updated in the
        web app, not via the API.
      responses:
        '200':
          description: A list of Tag objects.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Organization-scoped API key supplied in the Authorization header.
        Generated in the Onomondo platform and coupled to the organization
        under which it is created.
  parameters:
    SimId:
      name: sim_id
      in: path
      required: true
      description: The Onomondo SIM identifier.
      schema:
        type: string
    TagId:
      name: tag_id
      in: path
      required: true
      description: The Tag identifier (UUID).
      schema:
        type: string
    Limit:
      name: limit
      in: query
      description: Maximum number of objects to return (1-1000).
      schema:
        type: integer
        minimum: 1
        maximum: 1000
        default: 1000
    Offset:
      name: offset
      in: query
      description: Number of objects to skip for pagination.
      schema:
        type: integer
        default: 0
  schemas:
    Sim:
      type: object
      properties:
        id:
          type: string
          description: The Onomondo SIM identifier.
        iccid:
          type: string
          description: Integrated Circuit Card Identifier.
        label:
          type: string
          nullable: true
        activated:
          type: boolean
        network_whitelist:
          type: string
          nullable: true
        imei_lock:
          type: string
          nullable: true
        connector:
          type: string
          nullable: true
        data_limit:
          $ref: '#/components/schemas/DataLimit'
        technologies:
          $ref: '#/components/schemas/Technologies'
        tags:
          type: array
          items:
            type: string
        location:
          type: object
          nullable: true
          description: Last known network location of the SIM (read-only).
    SimUpdate:
      type: object
      properties:
        label:
          type: string
          nullable: true
        network_whitelist:
          type: string
          nullable: true
        imei_lock:
          type: string
          nullable: true
        connector:
          type: string
          nullable: true
        activated:
          type: boolean
        data_limit:
          $ref: '#/components/schemas/DataLimit'
        technologies:
          $ref: '#/components/schemas/Technologies'
        tags:
          type: array
          items:
            type: string
    DataLimit:
      type: object
      properties:
        total:
          type: number
          description: Total data limit.
        type:
          type: string
          description: Limit period type.
        alert_threshold:
          type: number
          description: Threshold at which a cost/usage alert is triggered.
    Technologies:
      type: object
      properties:
        sms:
          type: boolean
        2g_3g:
          type: boolean
        4g:
          type: boolean
    Usage:
      type: object
      properties:
        usage:
          type: array
          items:
            type: object
            properties:
              sim_id:
                type: string
              bytes:
                type: integer
                description: Total bytes used.
              timestamp:
                type: string
                format: date-time
    SendSmsRequest:
      type: object
      required:
        - from
        - text
      properties:
        from:
          type: string
          description: Numeric (0-15 digits) or alphanumeric (1-10 chars) sender.
        text:
          type: string
          description: Message content or encoded data.
        type:
          type: string
          enum: [text, binary]
          default: text
        encoding:
          type: string
          enum: [hex, base64]
          description: Required when type is binary.
    NetworkList:
      type: object
      properties:
        name:
          type: string
        tags:
          type: array
          items:
            type: string
        networks:
          type: array
          items:
            type: object
            properties:
              mcc:
                type: string
                description: Mobile Country Code.
              mnc:
                type: string
                description: Mobile Network Code.
    Webhook:
      type: object
      required:
        - url
      properties:
        id:
          type: string
        url:
          type: string
          description: HTTPS endpoint; must start with https://.
        active:
          type: boolean
        label:
          type: string
          nullable: true
        tags:
          type: array
          description: Tag IDs to filter on; empty array includes all tags.
          items:
            type: string
        exclude_types:
          type: array
          description: Event types to exclude from delivery.
          items:
            type: string
            enum:
              - usage
              - usage-sms
              - network-registration
              - network-deregistration
              - network-authentication
              - sms
              - location
              - cost-alert
    Connector:
      type: object
      properties:
        name:
          type: string
          minLength: 3
          maxLength: 255
        type:
          type: string
          enum: [https, tls, microsoft_azure_iot, aws_iot_core]
        tags:
          type: array
          items:
            type: string
            format: uuid
        passthrough:
          type: array
          items:
            type: string
        options:
          type: object
          description: Connector-specific configuration.
    Tag:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string