Onomondo Webhooks & Notifications API

Manage webhooks that deliver near-real-time SIM events (usage, network registration/deregistration/authentication, SMS, location, and cost-alert) as HTTP POST callbacks, with Tag-based filtering and event-type exclusion.

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