wherever SIM GraphQL API Reference

Welcome to the wherever SIM GraphQL API reference! Everything you see here enables you to manage your wherever SIM Link+ SIM cards.

API Endpoints
https://graphql.api.whereversim.de/graphql
Headers
# The API token
Authorization: <YOUR_TOKEN_HERE>

What is GraphQL?

GraphQL is an Open-Source data query and manipulation language for APIs. Like a REST API, it is based on HTTP, but it comes with a few features that eliminate the following challenges:

  • Overfetching: Downloading superfluous data
  • Underfetching and the n+1 problem
  • Fixed data structure defined by the server
  • No strong typing
  • Polling for updates

Visit graphql.org to learn more about the basics of GraphQL.

Example query with curl

In this example we want to get a list of SIM cards from our inventory. We need the following items:

  • ICCID
  • IMEI
  • Monthly Data Volume

We want the result sorted by Monthly Data Volume in descending order. The result should be limited to 3 items.

curl command line example:

curl -g \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY_HERE" \
-d '{
  "variables": {
    "order": { "monthly_data_volume": "desc" },
    "limit": 3
  },
  "query": "query ListSims($filter: SimFilterInput, $order: SimListOrder, $limit: Int!, $nextToken: String) { listSims(filter: $filter, order: $order, limit: $limit, nextToken: $nextToken) { items { iccid imei monthly_data_volume } }}"
}' \
https://graphql.api.whereversim.de/graphql

JSON based response:

{
  "data": {
    "listSims": {
      "items": [
        {
          "iccid": "9876543210123456789",
          "imei": "869876543210123",
          "monthly_data_volume": 6012954214
        },
        {
          "iccid": "9876543211234567890",
          "imei": "869876543211234",
          "monthly_data_volume": 501219328
        },
        {
          "iccid": "9876543212345678901",
          "imei": "869876543212341",
          "monthly_data_volume": 31457280
        }
      ]
    }
  }
}

List of possible SIM status

The following table shows a list of the possible SIM status:

Numeric representation Name Description
1 No Status Status of SIM is unknown
2 Activated SIM is activated
3 Issued SIM is issued (delivery condition)
4 Deleted SIM is deleted
5 Deactivated SIM is deactivated
6 Test Ready SIM is test ready and switches to Activated once the test data, SMS or voice volume is exceeded
7 Retired SIM is retired. Cannot be activated again
8 Activation ready SIM is ready for activation
9 Inventory SIM is in inventory
10 Replaced SIM is replaced
11 Activation Pendant SIM activation is pendant
12 Suspended SIM is suspended
13 Waiting for Activation SIM is in transition to Activated status
14 Waiting for Deactivation SIM is in transition to Deactivated status
15 Test Usage Exhausted SIM is deactivated because of exhausted test usage
16 Data Usage Exhausted SIM is deactivated because of exhausted data usage
17 Waiting for Activation Ready SIM is in transition to Activation Ready status
18 SMS Limit exceeded SIM is deactivated because of exceeded SMS limit
19 Voice Limit exceeded SIM is deactivated because of exceeded voice limit
20 IMEI unauthorized SIM is deactivated because the IMEI of the current device does not match the one configured in the IMEI lock

List of provider ids

The following table shows a list of the provider / product ids:

ID provider / product
1 connect+
2 tech+ pro
3 tech+
4 data+
5 link+

List of SIM event types

The following table shows a list of the possible SIM event types:

event type description
consumption Consumption of data, sms or voice for the current day and month
lifecycle Changes of the SIM status
presence Data connection established or disconnected
cancelLocation Cancel location send
imeiLockSwitch IMEI lock enabled/disabled/auto-detect switch
imeiUnauthorized SIM card has been used with an unauthorized IMEI
usageNotification Usage notification send

The nextToken principle

The nextToken principle is used when a query can return many results. One example of this is the listSims query. This query requires a limit to be set for the maximum number of results per query. If there are more results than the limit, a nextToken is returned if queried. This nextToken can be used for another call of listSims to get the more results. If there are no more results, the nextToken is null.

Let's look at an example. Let's assume we have 9 SIM cards in our inventory and want to query the ICCIDs of these 9 cards in ascending order. The query is limited to five results, so two queries are necessary to get all results.

Our first query looks like this:

 {
   "variables": {
     "order": { "iccid": "asc" },
     "limit": 5,
     "nextToken": ""
   },
   "query": "query ListSims($order: SimListOrder, $limit: Int!, $nextToken: String) { listSims(order: $order, limit: $limit, nextToken: $nextToken) { items { iccid } nextToken }}"
 }

The result looks like this:

 {
   "data": {
     "listSims": {
       "items": [
         {
           "iccid": "9876543200012345601"
         },
         {
           "iccid": "9876543200012345602"
         },
         {
           "iccid": "9876543200012345603"
         },
         {
           "iccid": "9876543200012345604"
         },
         {
           "iccid": "9876543200012345605"
         }
       ],
       "nextToken": "eyJuZXh0X29mZnNldCI6NX0="
     }
   }
 }

We receive 5 of 9 items. To get the next 5 results we need to set the nextToken eyJuZXh0X29mZnNldCI6NX0= in our next query.

 {
   "variables": {
     "order": { "iccid": "asc" },
     "limit": 5,
     "nextToken": "eyJuZXh0X29mZnNldCI6NX0="
   },
   "query": "query ListSims($order: SimListOrder, $limit: Int!, $nextToken: String) { listSims(order: $order, limit: $limit, nextToken: $nextToken) { items { iccid } nextToken }}"
 }

Our second result looks like this:

{
  "data": {
    "listSims": {
      "items": [
        {
          "iccid": "9876543200012345606"
        },
        {
          "iccid": "9876543200012345607"
        },
        {
          "iccid": "9876543200012345608"
        },
        {
          "iccid": "9876543200012345609"
        }
      ],
      "nextToken": null
    }
  }
}

We got the last 4 items and the nextToken is null which means there are no more items to fetch.

Batch Jobs

Batch jobs can be started by selecting affected SIM cards through a SIM filter. If no SIM card filter is provided, all SIM cards will be selected for the batch job. Additionally a exclude list can be sent with the request starting a batch job. The exclude list is only applied when no include list is provided. The include list has priority over filter and exclude list.

The maximum size for include and exclude filter is 1000 items.

So the following scenarios will be available:

  • create a batch job without SIM filter and no exclude list: all SIM cards of a customer are affected by the batch job
  • create a batch job without SIM filter and with exclude list: all SIM cards without the given excluded SIM cards are affected by the batch job
  • create a batch job with SIM filter: only the filtered SIM cards are affected by the batch job
  • create a batch job with SIM filter and exclude list: all filtered SIM cards without the excluded SIM cards are processed
  • create a batch job with include list: only the supplied included SIM cards are affected

Depending on the number of affected SIM cards the batch job may start delayed.

Some examples:

Start a batch job for all SIM cards, changing the monthly data limit to "unlimited":

   {
     "variables": {
       "p1": { "monthly_data_limit": 0 }
     },
     "query": "mutation startBatchJob($p1: BatchJobParametersInput!) {startBatchJob(params: $p1) {batchJobId}}"
   }

Start a batch job for two specific SIM cards, changing the monthly data-, sms mo-, sms mt- and voice-limit to "unlimited":

   {
      "variables": {
        "p2": {
          "includeIccIds": [
            "1234567890123456789",
            "1234567890123456788"
          ],
          "monthly_data_limit": 0,
          "monthly_sms_mo_limit": 0,
          "monthly_sms_mt_limit": 0,
          "monthly_voice_mo_limit": 0
        }
      },
    },
    "query": "mutation startBatchJob($p2: BatchJobParametersInput!) {startBatchJob(params: $p2) {batchJobId}}"
  }

Start a batch job with all SIMs in status "Activated" but exclude 2 SIM cards, changing the voice limit to "unlimited":

  {
    "variables": {
      "p3": {
        "excludeIccIds": [
          "9876543210987654321",
          "9876543210987654322"
        ],
        "simFilter": {
          "statusid": {
            "in": [
              2
            ]
          }
        },
        "monthly_voice_mo_limit": 0
      }
    },
    "query": "mutation startBatchJob($p3: BatchJobParametersInput!) {startBatchJob(params: $p3) {batchJobId}}"
  }

List of batch job failure codes

The following table shows a list of the possible error codes when a batch job is executed:

Error code Description
1 StatusID has not been changed because it was set already to the desired one
2 Status could not be changed at provider
3 General error while setting SIM status
4 Status transition not allowed
100 Custom field 1 has not been changed because it was already set to the desired one
101 Error writing new custom field 1 value to database
102 General error while setting custom field 1
200 Data limit not changed because it was already set to the desired one
201 General error while setting data limit
300 SMS MO Limit not changed because it was already set to the desired one
301 General error while setting SMS MO limit
400 SMS MT Limit not changed because it was already set to the desired one
401 General error while setting SMS MT limit
500 Voice MO Limit has not changed because it was already set to the desired one
501 General error while setting voice MO limit
600 End customer label not been changed because it was already set to the desired one
601 Error writing new end customer label to database
602 General error while writing end customer label
700 IMEI lock not changed because already set to desired one
701 General error while writing IMEI lock

Queries

getAvailableStatusTransitions

Description

Get a list of available status transitions for a SIM.

Transitioning from one to another Sim status is not possible in every situation. This Query returns possible transitions. See List of possible SIM status.

Response

Returns [SimTransition]!

Example

Query
query GetAvailableStatusTransitions {
  getAvailableStatusTransitions {
    fromstatusid
    tostatusid
    providerid
  }
}
Response
{
  "data": {
    "getAvailableStatusTransitions": [
      {"fromstatusid": 42, "tostatusid": 42, "providerid": 42}
    ]
  }
}

getBatchJob

Description

Get a specific batch job's definition and basic information of that batch job.

Response

Returns a BatchJob!

Arguments
Name Description
batchJobId - Long! (required!) The specific batch job id

Example

Query
query GetBatchJob($batchJobId: Long!) {
  getBatchJob(batchJobId: $batchJobId) {
    batchJobId
    startedAt
    finishedAt
    startedBy {
      ... on UserAccount {
        ...UserAccountFragment
      }
      ... on DeletedUserAccount {
        ...DeletedUserAccountFragment
      }
      ... on ApiKey {
        ...ApiKeyFragment
      }
      ... on DeletedApiKey {
        ...DeletedApiKeyFragment
      }
    }
    statusDetails {
      currentStatus
      totalSims
      failedSims
      successfulSims
      failures {
        ...BatchErrorCountsFragment
      }
    }
    changes {
      statusid
      custom_field_1
      monthly_data_limit
      monthly_sms_mo_limit
      monthly_sms_mt_limit
      monthly_voice_mo_limit
      end_customer_label
      imei_lock
    }
    customerid
  }
}
Variables
{"batchJobId": 1707747614}
Response
{
  "data": {
    "getBatchJob": {
      "batchJobId": 1707747614,
      "startedAt": 1707747614,
      "finishedAt": 1707747614,
      "startedBy": UserAccount,
      "statusDetails": BatchJobStatusDetails,
      "changes": BatchJobChanges,
      "customerid": 42
    }
  }
}

getCustomerData

Description

Get data of customer

Response

Returns a Customer!

Example

Query
query GetCustomerData {
  getCustomerData {
    customerid
    current_name
    is_test_customer
  }
}
Response
{
  "data": {
    "getCustomerData": {
      "customerid": 42,
      "current_name": "xyz789",
      "is_test_customer": false
    }
  }
}

getDataConsumptionReport

Description

Query to get data consumption on a daily basis. A filter needs to get applied with this query.

Response

Returns [DataConsumption]

Arguments
Name Description
iccid - ID! (required!) ICCID of the SIM card to get the report for
filterOptions - DataConsumptionFilterInput! (required!) A filter that has to be applied. A maximum of 3 months back is possible. If a start date more than 3 months back is specified the maximum last 3 months are selected for query.

Example

Query
query GetDataConsumptionReport(
  $iccid: ID!,
  $filterOptions: DataConsumptionFilterInput!
) {
  getDataConsumptionReport(
    iccid: $iccid,
    filterOptions: $filterOptions
  ) {
    day
    bytes
  }
}
Variables
{
  "iccid": "9876543212345678901",
  "filterOptions": {"start": "2020-01-01", "stop": "2020-01-31"}
}
Response
{
  "data": {
    "getDataConsumptionReport": [
      {"day": "xyz789", "bytes": 1707747614}
    ]
  }
}

getStatistics

Description

Returns a group of statistics like number of active SIMs, total SIM cards and current monthly usage (Total).

Response

Returns a Statistic!

Arguments
Name Description
customerid - Int (optional) The specific customer to get the api keys for. Can only be used by admin accounts.

Example

Query
query GetStatistics($customerid: Int) {
  getStatistics(customerid: $customerid) {
    totalSimCards
    activeSimCards
    currentMonthlyDataUsage
    previousMonthDataUsage
  }
}
Variables
{"customerid": 42}
Response
{
  "data": {
    "getStatistics": {
      "totalSimCards": 42,
      "activeSimCards": 42,
      "currentMonthlyDataUsage": 1707747614,
      "previousMonthDataUsage": 1707747614
    }
  }
}

listApiKeys

Description

Returns a list of API keys registered for the account's associated customer id

Response

Returns [ApiKey]!

Example

Query
query ListApiKeys {
  listApiKeys {
    keyid
    key
    comment
    created
    lastused
    ipAddressAllowlist
    expiresAtMs
  }
}
Response
{
  "data": {
    "listApiKeys": [
      {
        "keyid": 42,
        "key": "xyz789",
        "comment": "abc123",
        "created": 1707747614,
        "lastused": 1707747614,
        "ipAddressAllowlist": ["xyz789"],
        "expiresAtMs": 1707747614
      }
    ]
  }
}

listBatchJobDetails

Description

Lists a batch job's details.

Response

Returns a BatchJobDetail!

Arguments
Name Description
batchJobId - Long! (required!) The batch job id to get the details for
filter - BatchJobDetailsFilterInput (optional) Criteria to filter the result
order - BatchJobDetailsOrderInput (optional) Criteria to order the result
limit - Int (optional) The max number of batch job details being returned by the query
nextToken - String (optional) The optional nextToken of a previous request (see BatchJobDetail)

Example

Query
query ListBatchJobDetails(
  $batchJobId: Long!,
  $filter: BatchJobDetailsFilterInput,
  $order: BatchJobDetailsOrderInput,
  $limit: Int,
  $nextToken: String
) {
  listBatchJobDetails(
    batchJobId: $batchJobId,
    filter: $filter,
    order: $order,
    limit: $limit,
    nextToken: $nextToken
  ) {
    simList {
      iccid
      custom_field_1
      details {
        ...BatchJobSimDetailChangeFragment
      }
    }
    nextToken
    totalCount
  }
}
Variables
{
  "batchJobId": 1707747614,
  "filter": BatchJobDetailsFilterInput,
  "order": BatchJobDetailsOrderInput,
  "limit": 42,
  "nextToken": null
}
Response
{
  "data": {
    "listBatchJobDetails": {
      "simList": [BatchJobSimDetail],
      "nextToken": "xyz789",
      "totalCount": 1707747614
    }
  }
}

listBatchJobs

Description

Returns a list of all batch jobs sorted by start date (descending). The information provided is the batch job's definition and some basic information for each batch job.

Response

Returns a BatchJobList!

Arguments
Name Description
filter - ListBatchJobsFilter (optional) A filter that can be applied to the query.
limit - Int (optional) The max number of batch jobs being returned by the query
nextToken - String (optional) The optional nextToken of a previous request (see BatchJobList)

Example

Query
query ListBatchJobs(
  $filter: ListBatchJobsFilter,
  $limit: Int,
  $nextToken: String
) {
  listBatchJobs(
    filter: $filter,
    limit: $limit,
    nextToken: $nextToken
  ) {
    items {
      batchJobId
      startedAt
      finishedAt
      startedBy {
        ... on UserAccount {
          ...UserAccountFragment
        }
        ... on DeletedUserAccount {
          ...DeletedUserAccountFragment
        }
        ... on ApiKey {
          ...ApiKeyFragment
        }
        ... on DeletedApiKey {
          ...DeletedApiKeyFragment
        }
      }
      statusDetails {
        ...BatchJobStatusDetailsFragment
      }
      changes {
        ...BatchJobChangesFragment
      }
      customerid
    }
    nextToken
    totalCount
  }
}
Variables
{
  "filter": ListBatchJobsFilter,
  "limit": 42,
  "nextToken": null
}
Response
{
  "data": {
    "listBatchJobs": {
      "items": [BatchJob],
      "nextToken": "abc123",
      "totalCount": 1707747614
    }
  }
}

listBillingData

Description

Lists available billing data

Response

Returns a BillingDataList

Arguments
Name Description
limit - Int! (required!) Limits the number of returned results. The minimum is 1 the maximum is 100.
nextToken - String (optional) The nextToken of a previous request (see BillingDataList)

Example

Query
query ListBillingData(
  $limit: Int!,
  $nextToken: String
) {
  listBillingData(
    limit: $limit,
    nextToken: $nextToken
  ) {
    items {
      year
      month
      data_volume
      invoice_amount
      currency
    }
    nextToken
  }
}
Variables
{"limit": 42, "nextToken": null}
Response
{
  "data": {
    "listBillingData": {
      "items": [BillingData],
      "nextToken": "xyz789"
    }
  }
}

listEndCustomerLabels

Description

List available (unique) labels for all SIM cards

Response

Returns an EndCustomerLabels

Arguments
Name Description
filter - ListEndCustomerLabelsFilterInput (optional) Optional filter criteria which can be used to filter the returned labels.
limit - Int! (required!) Limit the number of results returned. The minimum is 1 the maximum is 100.
nextToken - String (optional) The nextToken of a previous request (see EndCustomerLabels)

Example

Query
query ListEndCustomerLabels(
  $filter: ListEndCustomerLabelsFilterInput,
  $limit: Int!,
  $nextToken: String
) {
  listEndCustomerLabels(
    filter: $filter,
    limit: $limit,
    nextToken: $nextToken
  ) {
    items {
      name
    }
    nextToken
  }
}
Variables
{
  "filter": {"name": {"beginsWith": "MyEnd", "contains": "EndCustomer"}},
  "limit": 42,
  "nextToken": null
}
Response
{
  "data": {
    "listEndCustomerLabels": {
      "items": [EndCustomerLabel],
      "nextToken": "abc123"
    }
  }
}

listSimEvents

Description

Returns events of a SIM card

Response

Returns a SimEvents

Arguments
Name Description
iccid - ID! (required!) ICCID of the SIM card
limit - Int! (required!) Limit the number of results returned. The minimum is 1 the maximum is 100.
nextToken - String (optional) The nextToken of a previous request (see SimEvents)
filterOptions - SimEventFilterInput (optional) Criteria to filter the result
order - SimEventOrder (optional) Criteria to order the result

Example

Query
query ListSimEvents(
  $iccid: ID!,
  $limit: Int!,
  $nextToken: String,
  $filterOptions: SimEventFilterInput,
  $order: SimEventOrder
) {
  listSimEvents(
    iccid: $iccid,
    limit: $limit,
    nextToken: $nextToken,
    filterOptions: $filterOptions,
    order: $order
  ) {
    items {
      id
      iccid
      timestampMilliseconds
      type
      details
      jsonData
    }
    nextToken
    totalEvents
  }
}
Variables
{
  "iccid": "9876543212345678901",
  "limit": 42,
  "nextToken": null,
  "filterOptions": {"type": "presence", "timestampMilliseconds": 1744366387096},
  "order": SimEventOrder
}
Response
{
  "data": {
    "listSimEvents": {
      "items": [
        {
          "id": 42,
          "iccid": "9876543212345678901",
          "timestampMilliseconds": 1744366387096,
          "type": "presence",
          "details": "Status: GPRS registered, Event: GPRS network connection, Operator: Telefonica O2 Germany,DE(26203), IP: 10.49.53.50",
          "jsonData": "{\"presenceLevel\":\"GPRS\",\"presenceEvent\":\"GPRS_UP\",\"operator\":\"Telefonica O2 Germany\",\"nwc\":\"26203\",\"ip\":\"10.49.53.50\",\"countryCode\":\"DE\"}"
        }
      ],
      "nextToken": "abc123",
      "totalEvents": 1707747614
    }
  }
}

listSims

Description

Get a list of available SIM cards.

Hint: It might be necessary to call listSims multiple times with different nextTokens (see SimList) in order to get all SIM cards.

The returned SimList can be pre filtered and/or pre ordered. Additionally number of returned items can be limited.

The returned SimList can be minimized by given a quick search input to get only the searched SIM list

Response

Returns a SimList

Arguments
Name Description
filter - SimFilterInput (optional) Criteria to filter the result
order - SimListOrder (optional) Criteria to order the result
limit - Int! (required!) Limit the number of results returned. The minimum is 1 the maximum is 100.
quickSearch - String (optional) Criteria to full text search on ICCID, Device Name, MSISDN and IMEI fields
nextToken - String (optional) The nextToken of a previous request (see SimList)

Example

Query
query ListSims(
  $filter: SimFilterInput,
  $order: SimListOrder,
  $limit: Int!,
  $quickSearch: String,
  $nextToken: String
) {
  listSims(
    filter: $filter,
    order: $order,
    limit: $limit,
    quickSearch: $quickSearch,
    nextToken: $nextToken
  ) {
    items {
      iccid
      statusid
      providerid
      activation_timestamp
      imei
      imsi
      msisdn
      in_session_since
      monthly_data_volume
      monthly_data_limit
      monthly_sms_mo
      monthly_sms_mt
      monthly_sms_mo_limit
      monthly_sms_mt_limit
      monthly_voice_mo
      monthly_voice_mo_limit
      custom_field_1
      previous_month_data_volume
      nwc
      apn
      ip_address
      end_customer_label {
        ...EndCustomerLabelFragment
      }
      imei_lock {
        ...ImeiLockFragment
      }
    }
    nextToken
    totalSims
  }
}
Variables
{
  "filter": {"iccid": {"eq": "9876543212345678901"}},
  "order": {"iccid": "asc"},
  "limit": 42,
  "quickSearch": "xyz789",
  "nextToken": null
}
Response
{
  "data": {
    "listSims": {
      "items": [SIM],
      "nextToken": "abc123",
      "totalSims": 1707747614
    }
  }
}

listUserAccounts

Description

List user accounts

Response

Returns [UserAccount]!

Arguments
Name Description
customerid - Int (optional) List User Accounts of the provided customerid

Example

Query
query ListUserAccounts($customerid: Int) {
  listUserAccounts(customerid: $customerid) {
    id
    email
    status
    groups
    zoneinfo
    locale
  }
}
Variables
{"customerid": 42}
Response
{
  "data": {
    "listUserAccounts": [
      {
        "id": "abc123",
        "email": "abc123",
        "status": "abc123",
        "groups": ["abc123"],
        "zoneinfo": "xyz789",
        "locale": "xyz789"
      }
    ]
  }
}

Mutations

cancelBatchJob

Description

Stops a running batch job. Stopping is an asynchronous task and it may take a little until the batch job is finally stopped.

Response

Returns a Boolean!

Arguments
Name Description
batchJobId - Long! (required!) The ID of the batch job to be cancelled

Example

Query
mutation CancelBatchJob($batchJobId: Long!) {
  cancelBatchJob(batchJobId: $batchJobId)
}
Variables
{"batchJobId": 1707747614}
Response
{"data": {"cancelBatchJob": false}}

cancelLocation

Description

Sends a cancel location request to the desired SIM card - issuing a reconnect to the network. This may help to solve connection issues. The connection restart only happens when the device receives the request properly.

A cancel location request can only be issued once for an ICC ID in a specific timeframe. The response contains a unix timestamp which defines when the next cancel location request can be sent again.

Response

Returns a CancelLocation!

Arguments
Name Description
iccid - ID! (required!) The iccid of the SIM card

Example

Query
mutation CancelLocation($iccid: ID!) {
  cancelLocation(iccid: $iccid) {
    sent
    blockedUntil
  }
}
Variables
{"iccid": "9876543212345678901"}
Response
{"data": {"cancelLocation": {"sent": true, "blockedUntil": 1707747614}}}

createApiKey

Description

Create a new API key.

Important: The response apikey is clear text and cannot be returned in clear text any further. The caller of this mutation needs to store the generated API key as it can not get unencrypted later!

Response

Returns an ApiKey

Arguments
Name Description
comment - String (optional) Comment for the API Key
ipAddressAllowlist - [String] (optional) Set an IP address allow list for source IP based access control when using the API key. IPv4 or IPv6 addresses with or without CIDRs are allowed. An empty list will delete the allow list and therefore allow all IP addresses to access the API with the given API key.
expiresAtMs - Long (optional) Set the validity timestamp of the given API key as a unix timestamp in milliseconds. To set unlimited validity set this parameter to -1. The validity timestamp can not be changed afterwards!

Example

Query
mutation CreateApiKey(
  $comment: String,
  $ipAddressAllowlist: [String],
  $expiresAtMs: Long
) {
  createApiKey(
    comment: $comment,
    ipAddressAllowlist: $ipAddressAllowlist,
    expiresAtMs: $expiresAtMs
  ) {
    keyid
    key
    comment
    created
    lastused
    ipAddressAllowlist
    expiresAtMs
  }
}
Variables
{
  "comment": "xyz789",
  "ipAddressAllowlist": ["xyz789"],
  "expiresAtMs": 1707747614
}
Response
{
  "data": {
    "createApiKey": {
      "keyid": 42,
      "key": "xyz789",
      "comment": "abc123",
      "created": 1707747614,
      "lastused": 1707747614,
      "ipAddressAllowlist": ["abc123"],
      "expiresAtMs": 1707747614
    }
  }
}

createUserAccount

Description

Creates a new user account to the current company of the logged in user. If a customerid is provided, then the user will be created there (if permitted). The email address must be valid and the password will be sent to the email address.

Response

Returns a UserAccount!

Arguments
Name Description
email - String! (required!) The email address of the user
groups - [String] (optional) Permission groups, see UserAccount
zoneinfo - String! (required!) Timezone of the user (e.g. Europe/Berlin)
locale - String! (required!) Defines the language of the portal (de or en)

Example

Query
mutation CreateUserAccount(
  $email: String!,
  $groups: [String],
  $zoneinfo: String!,
  $locale: String!
) {
  createUserAccount(
    email: $email,
    groups: $groups,
    zoneinfo: $zoneinfo,
    locale: $locale
  ) {
    id
    email
    status
    groups
    zoneinfo
    locale
  }
}
Variables
{
  "email": "xyz789",
  "groups": ["xyz789"],
  "zoneinfo": "abc123",
  "locale": "xyz789"
}
Response
{
  "data": {
    "createUserAccount": {
      "id": "abc123",
      "email": "xyz789",
      "status": "abc123",
      "groups": ["xyz789"],
      "zoneinfo": "abc123",
      "locale": "xyz789"
    }
  }
}

deleteApiKey

Description

Delete an API key with the given id of the key. When the operation is successful the original api key entry is returned, which has been deleted.

Response

Returns an ApiKey

Arguments
Name Description
keyid - ID! (required!) The ID of the API key to delete. The id can be queried with listApiKeys

Example

Query
mutation DeleteApiKey($keyid: ID!) {
  deleteApiKey(keyid: $keyid) {
    keyid
    key
    comment
    created
    lastused
    ipAddressAllowlist
    expiresAtMs
  }
}
Variables
{"keyid": "4"}
Response
{
  "data": {
    "deleteApiKey": {
      "keyid": 42,
      "key": "abc123",
      "comment": "abc123",
      "created": 1707747614,
      "lastused": 1707747614,
      "ipAddressAllowlist": ["xyz789"],
      "expiresAtMs": 1707747614
    }
  }
}

deleteUserAccount

Description

Deletes a user account. The user will be logged out immediately.

Response

Returns a UserAccount!

Arguments
Name Description
id - String! (required!) Id/UUID of the user to delete. The id is the one returned by listUserAccounts

Example

Query
mutation DeleteUserAccount($id: String!) {
  deleteUserAccount(id: $id) {
    id
    email
    status
    groups
    zoneinfo
    locale
  }
}
Variables
{"id": "xyz789"}
Response
{
  "data": {
    "deleteUserAccount": {
      "id": "xyz789",
      "email": "xyz789",
      "status": "abc123",
      "groups": ["abc123"],
      "zoneinfo": "abc123",
      "locale": "abc123"
    }
  }
}

resendUserAccountInvite

Description

Resends the invitation e-mail for a specific user. This mutation is only allowed when the given user account is in status 'InvitationSent' or 'InvitationExpired'.

Response

Returns a Boolean!

Arguments
Name Description
id - String! (required!) Id/UUID of the user to re-invite. The id is the one returned by listUserAccounts

Example

Query
mutation ResendUserAccountInvite($id: String!) {
  resendUserAccountInvite(id: $id)
}
Variables
{"id": "abc123"}
Response
{"data": {"resendUserAccountInvite": false}}

sendSms

Description

Sends an SMS to the corresponding SIM identified by iccid.

Response

Returns a Boolean!

Arguments
Name Description
iccid - ID! (required!) The iccid of the SIM card
text - String! (required!) The text/data that should be send via SMS
originator - String (optional) The originator which is set for the SMS. The originator can be a phone number. Please note that the originator must be registered by our support team for you beforehand.

Example

Query
mutation SendSms(
  $iccid: ID!,
  $text: String!,
  $originator: String
) {
  sendSms(
    iccid: $iccid,
    text: $text,
    originator: $originator
  )
}
Variables
{
  "iccid": "9876543212345678901",
  "text": "abc123",
  "originator": "abc123"
}
Response
{"data": {"sendSms": false}}

startBatchJob

Description

Creates and starts a batch job as soon as possible. Returns a batch job id for reference of the batch job. See Batch Jobs for more details on batch jobs.

Response

Returns a CreateBatchJobResult!

Arguments
Name Description
params - BatchJobParametersInput! (required!) The parameters to apply for the batch job. The object must contain at least one property to be changed.

Example

Query
mutation StartBatchJob($params: BatchJobParametersInput!) {
  startBatchJob(params: $params) {
    batchJobId
  }
}
Variables
{"params": BatchJobParametersInput}
Response
{"data": {"startBatchJob": {"batchJobId": 1707747614}}}

updateApiKey

Description

Update an API key. If the update was successful the new ApiKey entry will be returned.

Response

Returns an ApiKey

Arguments
Name Description
keyid - ID! (required!) The ID of the API key to update. The id can be queried with listApiKeys
comment - String (optional) The comment to update to. If the comment is NULL the comment will be reset to NULL. If parameter is not provided the comment will also be reset to NULL.
ipAddressAllowlist - [String] (optional) Set an IP address allow list for source IP based access control when using the API key. IPv4 or IPv6 addresses with or without CIDRs are allowed. An empty list will delete the allow list and therefore allow all IP addresses to access the API with the given API key.

Example

Query
mutation UpdateApiKey(
  $keyid: ID!,
  $comment: String,
  $ipAddressAllowlist: [String]
) {
  updateApiKey(
    keyid: $keyid,
    comment: $comment,
    ipAddressAllowlist: $ipAddressAllowlist
  ) {
    keyid
    key
    comment
    created
    lastused
    ipAddressAllowlist
    expiresAtMs
  }
}
Variables
{
  "keyid": 4,
  "comment": "abc123",
  "ipAddressAllowlist": ["xyz789"]
}
Response
{
  "data": {
    "updateApiKey": {
      "keyid": 42,
      "key": "abc123",
      "comment": "abc123",
      "created": 1707747614,
      "lastused": 1707747614,
      "ipAddressAllowlist": ["abc123"],
      "expiresAtMs": 1707747614
    }
  }
}

updateSim

Description

Update properties of SIM identified by iccid.

Response

Returns an SIM!

Arguments
Name Description
iccid - ID! (required!) The iccid of the SIM card
statusid - Int (optional) Sets status the SIM should be in. See List of possible SIM status
monthly_data_limit - Long (optional) Sets the monthly data limit in bytes
custom_field_1 - String (optional) Customer defined field like device name or serial number
monthly_sms_mo_limit - Long (optional) The monthly SMS MO limit for this SIM card. NULL means no limit
monthly_sms_mt_limit - Long (optional) The monthly SMS MT limit for this SIM card. NULL means no limit
monthly_voice_mo_limit - Long (optional) The monthly voice mo limit for this SIM card. NULL means no limit
end_customer_label - EndCustomerLabelInput (optional) The end customer label to be assigned. If this label is not available in the request the label will not get changed.
imei_lock - ImeiLockInput (optional) Set an optional IMEI lock for the SIM card (used to lock or unlock IMEI on a SIM card). The IMEI lock is not getting changed when this parameter is not available.

Example

Query
mutation UpdateSim(
  $iccid: ID!,
  $statusid: Int,
  $monthly_data_limit: Long,
  $custom_field_1: String,
  $monthly_sms_mo_limit: Long,
  $monthly_sms_mt_limit: Long,
  $monthly_voice_mo_limit: Long,
  $end_customer_label: EndCustomerLabelInput,
  $imei_lock: ImeiLockInput
) {
  updateSim(
    iccid: $iccid,
    statusid: $statusid,
    monthly_data_limit: $monthly_data_limit,
    custom_field_1: $custom_field_1,
    monthly_sms_mo_limit: $monthly_sms_mo_limit,
    monthly_sms_mt_limit: $monthly_sms_mt_limit,
    monthly_voice_mo_limit: $monthly_voice_mo_limit,
    end_customer_label: $end_customer_label,
    imei_lock: $imei_lock
  ) {
    iccid
    statusid
    providerid
    activation_timestamp
    imei
    imsi
    msisdn
    in_session_since
    monthly_data_volume
    monthly_data_limit
    monthly_sms_mo
    monthly_sms_mt
    monthly_sms_mo_limit
    monthly_sms_mt_limit
    monthly_voice_mo
    monthly_voice_mo_limit
    custom_field_1
    previous_month_data_volume
    nwc
    apn
    ip_address
    end_customer_label {
      name
    }
    imei_lock {
      imei
      enabled
    }
  }
}
Variables
{
  "iccid": "9876543212345678901",
  "statusid": 42,
  "monthly_data_limit": 1707747614,
  "custom_field_1": "abc123",
  "monthly_sms_mo_limit": 1707747614,
  "monthly_sms_mt_limit": 1707747614,
  "monthly_voice_mo_limit": 1707747614,
  "end_customer_label": EndCustomerLabelInput,
  "imei_lock": {"lock": true, "imei": "308044942199875"}
}
Response
{
  "data": {
    "updateSim": {
      "iccid": "4",
      "statusid": 42,
      "providerid": 42,
      "activation_timestamp": 1707747614,
      "imei": "abc123",
      "imsi": "abc123",
      "msisdn": "abc123",
      "in_session_since": 1707747614,
      "monthly_data_volume": 1707747614,
      "monthly_data_limit": 1707747614,
      "monthly_sms_mo": 42,
      "monthly_sms_mt": 42,
      "monthly_sms_mo_limit": 42,
      "monthly_sms_mt_limit": 42,
      "monthly_voice_mo": 1707747614,
      "monthly_voice_mo_limit": 1707747614,
      "custom_field_1": "xyz789",
      "previous_month_data_volume": 1707747614,
      "nwc": "xyz789",
      "apn": "xyz789",
      "ip_address": "abc123",
      "end_customer_label": EndCustomerLabel,
      "imei_lock": ImeiLock
    }
  }
}

updateUserAccount

Description

Update a user account

Response

Returns a UserAccount!

Arguments
Name Description
id - String! (required!) Id/UUID of the user to update. The id is the one returned by listUserAccounts
groups - [String] (optional) Permission groups, see UserAccount
zoneinfo - String (optional) Timezone of the user (e.g. Europe/Berlin)
locale - String (optional) Defines the language of the portal (de or en)

Example

Query
mutation UpdateUserAccount(
  $id: String!,
  $groups: [String],
  $zoneinfo: String,
  $locale: String
) {
  updateUserAccount(
    id: $id,
    groups: $groups,
    zoneinfo: $zoneinfo,
    locale: $locale
  ) {
    id
    email
    status
    groups
    zoneinfo
    locale
  }
}
Variables
{
  "id": "abc123",
  "groups": ["abc123"],
  "zoneinfo": "xyz789",
  "locale": "abc123"
}
Response
{
  "data": {
    "updateUserAccount": {
      "id": "abc123",
      "email": "xyz789",
      "status": "abc123",
      "groups": ["abc123"],
      "zoneinfo": "abc123",
      "locale": "xyz789"
    }
  }
}

Subscriptions

updatedBatchJob

Description

This subscription is to track the progress of BatchJobs.

Response

Returns a BatchJob

Arguments
Name Description
customerid - Int (optional) The customer ID which the BatchJob(s) are assigned to. Optional parameter, can only be set by super admins.

Example

Query
subscription UpdatedBatchJob($customerid: Int) {
  updatedBatchJob(customerid: $customerid) {
    batchJobId
    startedAt
    finishedAt
    startedBy {
      ... on UserAccount {
        ...UserAccountFragment
      }
      ... on DeletedUserAccount {
        ...DeletedUserAccountFragment
      }
      ... on ApiKey {
        ...ApiKeyFragment
      }
      ... on DeletedApiKey {
        ...DeletedApiKeyFragment
      }
    }
    statusDetails {
      currentStatus
      totalSims
      failedSims
      successfulSims
      failures {
        ...BatchErrorCountsFragment
      }
    }
    changes {
      statusid
      custom_field_1
      monthly_data_limit
      monthly_sms_mo_limit
      monthly_sms_mt_limit
      monthly_voice_mo_limit
      end_customer_label
      imei_lock
    }
    customerid
  }
}
Variables
{"customerid": 42}
Response
{
  "data": {
    "updatedBatchJob": {
      "batchJobId": 1707747614,
      "startedAt": 1707747614,
      "finishedAt": 1707747614,
      "startedBy": UserAccount,
      "statusDetails": BatchJobStatusDetails,
      "changes": BatchJobChanges,
      "customerid": 42
    }
  }
}

updatedSim

Description

This subscription is called if a SIM is updated.

Response

Returns an SIM

Example

Query
subscription UpdatedSim {
  updatedSim {
    iccid
    statusid
    providerid
    activation_timestamp
    imei
    imsi
    msisdn
    in_session_since
    monthly_data_volume
    monthly_data_limit
    monthly_sms_mo
    monthly_sms_mt
    monthly_sms_mo_limit
    monthly_sms_mt_limit
    monthly_voice_mo
    monthly_voice_mo_limit
    custom_field_1
    previous_month_data_volume
    nwc
    apn
    ip_address
    end_customer_label {
      name
    }
    imei_lock {
      imei
      enabled
    }
  }
}
Response
{
  "data": {
    "updatedSim": {
      "iccid": 4,
      "statusid": 42,
      "providerid": 42,
      "activation_timestamp": 1707747614,
      "imei": "abc123",
      "imsi": "abc123",
      "msisdn": "xyz789",
      "in_session_since": 1707747614,
      "monthly_data_volume": 1707747614,
      "monthly_data_limit": 1707747614,
      "monthly_sms_mo": 42,
      "monthly_sms_mt": 42,
      "monthly_sms_mo_limit": 42,
      "monthly_sms_mt_limit": 42,
      "monthly_voice_mo": 1707747614,
      "monthly_voice_mo_limit": 1707747614,
      "custom_field_1": "abc123",
      "previous_month_data_volume": 1707747614,
      "nwc": "xyz789",
      "apn": "abc123",
      "ip_address": "xyz789",
      "end_customer_label": EndCustomerLabel,
      "imei_lock": ImeiLock
    }
  }
}

updatedSimEvent

Description

This subscription is to track the SimEvent of a specific SIM card.

Response

Returns a SimEvent

Arguments
Name Description
iccid - ID! (required!) ICCID of the SIM card

Example

Query
subscription UpdatedSimEvent($iccid: ID!) {
  updatedSimEvent(iccid: $iccid) {
    id
    iccid
    timestampMilliseconds
    type
    details
    jsonData
  }
}
Variables
{"iccid": "9876543212345678901"}
Response
{
  "data": {
    "updatedSimEvent": {
      "id": 4,
      "iccid": "4",
      "timestampMilliseconds": 1707747614,
      "type": "xyz789",
      "details": "abc123",
      "jsonData": "abc123"
    }
  }
}

Types

ApiKey

Description

This type represents an API key entry

Fields
Field Name Description
keyid - Int! The ID of the API Key. This is needed to delete it or update it via mutation
key - String! The masked API key - only contains the clear text API Key when create operation is executed.
comment - String Any comment which has been registered with the API key. Optional property.
created - Long! The unix timestamp the API key has been created
lastused - Long The unix timestamp the key has been last used
ipAddressAllowlist - [String] A list of IP addresses or IP address ranges that are allowed to use this API key. An empty list means any IP address can access the API with the API key.
expiresAtMs - Long A unix timestamp in milliseconds which defines the date until the key is valid and accepted by the API. When the timestamp is -1 the API key has an unlimited validity.
Example
{
  "keyid": 42,
  "key": "abc123",
  "comment": "abc123",
  "created": 1707747614,
  "lastused": 1707747614,
  "ipAddressAllowlist": ["abc123"],
  "expiresAtMs": 1707747614
}

BatchErrorCounts

Fields
Field Name Description
statusId - Int The number of status id changes failed
custom_field_1 - Int The number of custom_field_1 changes failed.
monthly_data_limit - Int The number of monthly_data_limit changes failed.
monthly_sms_mo_limit - Int The number of monthly_sms_mo_limit changes failed.
monthly_sms_mt_limit - Int The number of monthly_sms_mt_limit changes failed.
monthly_voice_mo_limit - Int The number of monthly_voice_mo_limit changes failed.
end_customer_label - Int The number of end_customer_label changes failed.
imei_lock - Int The number of imei_lock changes failed.
Example
{
  "statusId": 42,
  "custom_field_1": 42,
  "monthly_data_limit": 42,
  "monthly_sms_mo_limit": 42,
  "monthly_sms_mt_limit": 42,
  "monthly_voice_mo_limit": 42,
  "end_customer_label": 42,
  "imei_lock": 42
}

BatchJob

Fields
Field Name Description
batchJobId - Long! ID of the batch job
startedAt - Long! Unix timestamp in milliseconds the job has been started
finishedAt - Long Unix timestamp in milliseconds the job has been finished (or cancelled) - when job is still running this field is NULL
startedBy - BatchJobOwner! The user or API key that created the batch job
statusDetails - BatchJobStatusDetails! This item contains the batch job status details
changes - BatchJobChanges! An object containing the changes for the batch job.
customerid - Int! The customer this batch job belongs to.
Example
{
  "batchJobId": 1707747614,
  "startedAt": 1707747614,
  "finishedAt": 1707747614,
  "startedBy": UserAccount,
  "statusDetails": BatchJobStatusDetails,
  "changes": BatchJobChanges,
  "customerid": 42
}

BatchJobChanges

Fields
Field Name Description
statusid - Int The new status to be set
custom_field_1 - String The new custom field 1 (or name of SIM card) to be set. Set empty to erase the custom_field_1
monthly_data_limit - Long The monthly data limit to be applied in bytes. Set to 0 for unlimited data.
monthly_sms_mo_limit - Long The monthly SMS MO limit to be applied. Set to 0 for unlimited MO SMS.
monthly_sms_mt_limit - Long The monthly SMS MT limit to be applied. Set to 0 for unlimited MT SMS.
monthly_voice_mo_limit - Long The voice MO limit to be applied. Set to 0 for unlimited voice MO.
end_customer_label - String The new end customer label to be set. Set empty to erase the end customer label.
imei_lock - Boolean Enable or disable IMEI lock for the selected SIM cards
Example
{
  "statusid": 42,
  "custom_field_1": "abc123",
  "monthly_data_limit": 1707747614,
  "monthly_sms_mo_limit": 1707747614,
  "monthly_sms_mt_limit": 1707747614,
  "monthly_voice_mo_limit": 1707747614,
  "end_customer_label": "xyz789",
  "imei_lock": true
}

BatchJobDetail

Fields
Field Name Description
simList - [BatchJobSimDetail]! This field contains a detailed list of changes per SIM card.
nextToken - String The token which is required to query further results via getBatchJobDetails.
totalCount - Long! The total number of all sim details available for the batch job
Example
{
  "simList": [BatchJobSimDetail],
  "nextToken": "abc123",
  "totalCount": 1707747614
}

BatchJobDetailsFilterInput

Description

This input provides the filtering options for the listBatchJobDetails query.

Fields
Input Field Description
status - [BatchJobSimDetailStatus] Filter for a specific batch job detail item status
quickSearch - String Criteria to full text search on ICCID and Device Name
Example
{
  "status": ["SUCCESSFUL"],
  "quickSearch": "xyz789"
}

BatchJobDetailsOrderInput

Description

This input provides the ordering options for the listBatchJobDetails query.

Fields
Input Field Description
executedAt - String Order by execution date
Example
{"executedAt": "abc123"}

BatchJobList

Fields
Field Name Description
items - [BatchJob] A list of batch job items
nextToken - String The token which is required to query further results via listBatchJobs.
totalCount - Long! The total number of all batch jobs available
Example
{
  "items": [BatchJob],
  "nextToken": "abc123",
  "totalCount": 1707747614
}

BatchJobOwner

Example
UserAccount

BatchJobParametersInput

Fields
Input Field Description
simFilter - SimFilterInput

The SIM filter input to be used for the icc id filter. This parameter can be used to pre-select the sim cards. If no filter is provided, all SIM cards owned by the customer will be selected for the batch job!

This filter can be refined with the excludeIccIds parameter.

excludeIccIds - [String] A List of ICC IDs to exclude from the given simFilter input. The maximum size of this list is 1000.
includeIccIds - [String] A list of ICC IDs to be included. The maximum size of this list is 1000. When this parameter is provided, the parameters simFilter and excludeIccIds are not taken into account for the batch job.
statusid - Int The new status to be set
custom_field_1 - String The new custom field 1 (or name of SIM card) to be set. Set empty to erase the custom_field_1.
monthly_data_limit - Long The monthly data limit to be applied in bytes. Set to 0 for unlimited data.
monthly_sms_mo_limit - Long The monthly SMS MO limit to be applied. Set to 0 for unlimited MO SMS.
monthly_sms_mt_limit - Long The monthly SMS MT limit to be applied. Set to 0 for unlimited MT SMS.
monthly_voice_mo_limit - Long The voice MO limit to be applied. Set to 0 for unlimited voice MO.
end_customer_label - String The new end customer label to be set. Set empty to erase the end customer label.
imei_lock - Boolean Enable or disable IMEI lock for the selected SIM cards.
Example
{
  "simFilter": {"iccid": {"eq": "9876543212345678901"}},
  "excludeIccIds": ["xyz789"],
  "includeIccIds": ["abc123"],
  "statusid": 42,
  "custom_field_1": "abc123",
  "monthly_data_limit": 1707747614,
  "monthly_sms_mo_limit": 1707747614,
  "monthly_sms_mt_limit": 1707747614,
  "monthly_voice_mo_limit": 1707747614,
  "end_customer_label": "xyz789",
  "imei_lock": false
}

BatchJobSimDetail

Fields
Field Name Description
iccid - String! The ICC ID of the SIM card
custom_field_1 - String The custom_field_1 value if set on SIM card
details - BatchJobSimDetailChange! The details for the given SIM. Contains a list of changes related to the batch job for the given ICC ID.
Example
{
  "iccid": "xyz789",
  "custom_field_1": "xyz789",
  "details": BatchJobSimDetailChange
}

BatchJobSimDetailChange

Fields
Field Name Description
executedAt - Long The unix timestamp in milliseconds when the change was executed.
errorCodes - [Int] A list of error codes occurred while changing the SIM card. See List of batch job failure codes
status - BatchJobSimDetailStatus! The status for explicitly this SIM card in the batch process.
Example
{"executedAt": 1707747614, "errorCodes": [42], "status": "SUCCESSFUL"}

BatchJobSimDetailStatus

Values
Enum Value Description

SUCCESSFUL

RUNNING

SKIPPED

FAILED

Example
"SUCCESSFUL"

BatchJobStatus

Values
Enum Value Description

PREPARING

RUNNING

CANCELLED

FAILED

COMPLETED

Example
"PREPARING"

BatchJobStatusDetails

Fields
Field Name Description
currentStatus - BatchJobStatus! The current status of the batch job.
totalSims - Int! The total number of affected SIM cards by the batch job
failedSims - Int! The number of SIM cards that failed to change.
successfulSims - Int! The number of SIM cards that have been changed successfully
failures - BatchErrorCounts Item that contains the error counts per change.
Example
{
  "currentStatus": "PREPARING",
  "totalSims": 42,
  "failedSims": 42,
  "successfulSims": 42,
  "failures": BatchErrorCounts
}

BillingData

Description

Represents billing data for one billing cycle

Fields
Field Name Description
year - Int! The year of the billing cycle
month - Int! The month of the billing cycle (1-12)
data_volume - Long! The total data volume consumed during the billing cycle
invoice_amount - Float! The amount invoiced for the billing cycle
currency - String! The currency of the invoice amount
Example
{
  "year": 42,
  "month": 42,
  "data_volume": 1707747614,
  "invoice_amount": 987.65,
  "currency": "xyz789"
}

BillingDataList

Description

Represents the response of a listBillingData request.

Fields
Field Name Description
items - [BillingData] The list of billing data entries
nextToken - String The token which is required to query further results via listBillingData. See The nextToken principle
Example
{
  "items": [BillingData],
  "nextToken": "xyz789"
}

Boolean

Description

The Boolean scalar type represents true or false.

Example
true

CancelLocation

Description

This type represents the response of a cancelLocation mutation.

Fields
Field Name Description
sent - Boolean! Defines if the request was sent successfully. If false is returned, it is most likely that the blackout period for the given ICC ID is still active for the cancel location request.
blockedUntil - Long! A unix timestamp in milliseconds which defines when the blocking period ends - a new request can be sent after this timestamp for the given ICC ID.
Example
{"sent": true, "blockedUntil": 1707747614}

CreateBatchJobResult

Fields
Field Name Description
batchJobId - Long! The ID of the batch job created.
Example
{"batchJobId": 1707747614}

Customer

Description

This type represents customer information

Fields
Field Name Description
customerid - Int! The ID of the customer
current_name - String! The customer name
is_test_customer - Boolean! True if the customer is in the testing period
Example
{
  "customerid": 42,
  "current_name": "xyz789",
  "is_test_customer": true
}

DataConsumption

Description

A single entry for a data consumption daily report

Fields
Field Name Description
day - String! The day in format 'yyyy-MM-dd' (e.g. '2024-01-01')
bytes - Long! The consumption of data in bytes for the given day
Example
{"day": "xyz789", "bytes": 1707747614}

DataConsumptionFilterInput

Description

This input represents the filter parameters for a data consumption daily report.

Fields
Input Field Description
start - String! Start (inclusive) of the data consumption filter, format: 'yyyy-MM-dd', e.g. '2020-01-01'.
stop - String! Stop (inclusive) of the data consumption filter, format: 'yyyy-MM-dd', e.g.: '2020-01-31'.
Example
{"start": "2020-01-01", "stop": "2020-01-31"}

DeletedApiKey

Description

This type represents a deleted API key entry

Fields
Field Name Description
keyid - Int! The ID of the deleted API Key
Example
{"keyid": 42}

DeletedUserAccount

Description

Deleted User account entity

Fields
Field Name Description
id - String! The UUID of the deleted user
Example
{"id": "abc123"}

EndCustomerLabel

Description

Represents an end customer label

Fields
Field Name Description
name - String! The name of the label
Example
{"name": "abc123"}

EndCustomerLabelInput

Description

This input contains the end customer label information that can be set

Fields
Input Field Description
name - String! The name of the label. If this name is empty the label will be deleted for the desired SIM card!
Example
{"name": "xyz789"}

EndCustomerLabels

Fields
Field Name Description
items - [EndCustomerLabel] The list of end customer labels
nextToken - String The token which is required to query further results via listEndCustomerLabels. See The nextToken principle
Example
{
  "items": [EndCustomerLabel],
  "nextToken": "xyz789"
}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

ImeiLock

Description

Represents an IMEI lock object for a SIM card

Fields
Field Name Description
imei - String The locked IMEI - if this field is empty and locked is true this field is on 'auto detect' and still waiting to get the IMEI from the device.
enabled - Boolean! Defines if the given IMEI is locked for the SIM card
Example
{"imei": "abc123", "enabled": false}

ImeiLockInput

Description

An activated IMEI lock ensures that your SIM card can only be used with a specific device. There are two ways to activate an IMEI lock:

  • Auto-Detect: The next/last active IMEI is used for the IMEI lock as soon as the SIM card logs into a mobile network. To do this, set lock = true and imei = null.
  • Set IMEI: The IMEI to be set is known and should be used for the IMEI lock. To do this, lock = true and imei = "YOUR_DEVICE_IMEI" must be set.
Fields
Input Field Description
lock - Boolean! Set it to True to activate the IMEI lock, and set it to False to deactivate it. If lock is set to False and the card is in IMEI unauthorized status, the card is set to Activated again.
imei - String This is the IMEI you want to set for the lock. Setting it to null or empty if lock = True activates Auto-Detect mode.
Example
{"lock": true, "imei": "308044942199875"}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
42

ListBatchJobsFilter

Description

This input provides the filtering options for the listBatchJobs query.

Fields
Input Field Description
status - BatchJobStatus Filter for a specific batch job status
Example
{"status": "PREPARING"}

ListEndCustomerLabelNameFilterInput

Description

This input represents the text/string based filter options for end customer label names

Fields
Input Field Description
beginsWith - String
contains - String
Example
{"beginsWith": "MyEnd", "contains": "EndCustomer"}

ListEndCustomerLabelsFilterInput

Description

This input represents the filter that can be set for getting the end customer labels assigned to SIM cards. The input fields are case insensitive.

Fields
Input Field Description
name - ListEndCustomerLabelNameFilterInput name related filter
Example
{"name": {"beginsWith": "MyEnd", "contains": "EndCustomer"}}

Long

Description

The Long scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^63) and 2^63 - 1.

Example
1707747614

SIM

Description

This types contains all properties a SIM can have.

Fields
Field Name Description
iccid - ID! The Integrated Circuit Card Identifier (ICCID) is used to identify a SIM card
statusid - Int! The current status of the SIM card. See List of possible SIM status
providerid - Int! The product the SIM card belongs to. See List of provider ids
activation_timestamp - Long The timestamp which represents the data and time the SIM card was activated for the first time
imei - String The International Mobile Equipment Identity (IMEI) which identifies the device which the SIM card is currently installed
imsi - String The International Mobile Subscriber Identity (IMSI) which identifies the SIM card in the mobile network
msisdn - String The Mobile Subscriber Integrated Services Digital Network Number (MSISDN) is the worldwide unique phone number of the SIM
in_session_since - Long The timestamp which represents the date and time the SIM is in its current session
monthly_data_volume - Long The data volume of the current month used by the SIM card
monthly_data_limit - Long The monthly data limit for this SIM card
monthly_sms_mo - Int The total number of SMS within the current month send by the SIM card
monthly_sms_mt - Int The total number of SMS within the current month received by the SIM card (send from portal/api)
monthly_sms_mo_limit - Int The monthly SMS MO limit for this SIM card. NULL means no limit
monthly_sms_mt_limit - Int The monthly SMS MT limit for this SIM card. NULL means no limit
monthly_voice_mo - Long The total of outgoing voice seconds in the current month for the SIM card
monthly_voice_mo_limit - Long The monthly voice mo limit for this SIM card. NULL means no limit
custom_field_1 - String Customer defined field for device name or serial number
previous_month_data_volume - Long The data volume of the previous month used by the SIM card
nwc - String The NWC (network code) which is a combination of MCC (mobile country code) and MNC (mobile network code)
apn - String The APN (Access Point Name) the SIM is connected with
ip_address - String The IP address assigned to the SIM card
end_customer_label - EndCustomerLabel The end customer label assigned to the SIM card
imei_lock - ImeiLock Defines the [IMEI Lock]#definition-ImeiLock for the SIM card.
Example
{
  "iccid": "4",
  "statusid": 42,
  "providerid": 42,
  "activation_timestamp": 1707747614,
  "imei": "xyz789",
  "imsi": "abc123",
  "msisdn": "xyz789",
  "in_session_since": 1707747614,
  "monthly_data_volume": 1707747614,
  "monthly_data_limit": 1707747614,
  "monthly_sms_mo": 42,
  "monthly_sms_mt": 42,
  "monthly_sms_mo_limit": 42,
  "monthly_sms_mt_limit": 42,
  "monthly_voice_mo": 1707747614,
  "monthly_voice_mo_limit": 1707747614,
  "custom_field_1": "abc123",
  "previous_month_data_volume": 1707747614,
  "nwc": "abc123",
  "apn": "xyz789",
  "ip_address": "abc123",
  "end_customer_label": EndCustomerLabel,
  "imei_lock": ImeiLock
}

SimEvent

Description

Events to a SIM card

Fields
Field Name Description
id - ID! The primary identifier of the Sim Event
iccid - ID! The ICC ID the Sim Event is for
timestampMilliseconds - Long! Timestamp of the event in milliseconds
type - String! The type of event that was triggered by the SIM card. See List of SIM event typs
details - String This is a short description of the event like: SIM card was deactivated
jsonData - String A JSON string that contains detailed information
Example
{
  "id": 42,
  "iccid": "9876543212345678901",
  "timestampMilliseconds": 1744366387096,
  "type": "presence",
  "details": "Status: GPRS registered, Event: GPRS network connection, Operator: Telefonica O2 Germany,DE(26203), IP: 10.49.53.50",
  "jsonData": "{\"presenceLevel\":\"GPRS\",\"presenceEvent\":\"GPRS_UP\",\"operator\":\"Telefonica O2 Germany\",\"nwc\":\"26203\",\"ip\":\"10.49.53.50\",\"countryCode\":\"DE\"}"
}

SimEventFilterInput

Description

This input represents the all filter parameters for a SimEvents request.

Fields
Input Field Description
type - StringFilterInput Type related filter. See List of SIM event typs
timestampMilliseconds - SimEventIntFilterInput Timestamp in milliseconds related filter
Example
{"type": "presence", "timestampMilliseconds": 1744366387096}

SimEventIntFilterInput

Description

This input represent an int based filter option for SIM events

Fields
Input Field Description
eq - Long Value is equal to eq
in - [Long] Value is equal to an item of in
between - [Long]

Value is in range of the minimum and maximum values given.

For example: [1, 5, 15] would return the range from 1 - 15

Example
{"eq": 1707747614, "in": [1707747614], "between": [1707747614]}

SimEventOrder

Description

This input represents the all filter parameters for a SimEvents request.

Possible values for each parameters are asc for ascending and desc for descending.

It is currently only possible to sort by one parameter. Sorting by several parameters does not produce the desired result.

Fields
Input Field Description
timestampMilliseconds - String Order by timestamp in milliseconds
Example
{"timestampMilliseconds": "abc123"}

SimEvents

Description

Details data to a SIM card

Fields
Field Name Description
items - [SimEvent] Events to a SIM card
nextToken - String The token which is required to query further results via listSimEvents. See The nextToken principle
totalEvents - Long The total number of events corresponding a SIM card
Example
{
  "items": [
    {
      "id": 42,
      "iccid": "9876543212345678901",
      "timestampMilliseconds": 1744366387096,
      "type": "presence",
      "details": "Status: GPRS registered, Event: GPRS network connection, Operator: Telefonica O2 Germany,DE(26203), IP: 10.49.53.50",
      "jsonData": "{\"presenceLevel\":\"GPRS\",\"presenceEvent\":\"GPRS_UP\",\"operator\":\"Telefonica O2 Germany\",\"nwc\":\"26203\",\"ip\":\"10.49.53.50\",\"countryCode\":\"DE\"}"
    }
  ],
  "nextToken": null,
  "totalEvents": 1
}

SimFilterInput

Description

This input represents the all filter parameters for a listSims request.

Fields
Input Field Description
iccid - StringFilterInput iccid related filter
statusid - SimListIntFilterInput status related filter. See List of possible SIM status
providerid - SimListIntFilterInput product related filter. See List of provider ids
imei - StringFilterInput IMEI related filter
imsi - StringFilterInput IMSI related filter
msisdn - StringFilterInput MSISDN related filter
custom_field_1 - StringFilterInput Custom field 1 related filter
end_customer_label - StringFilterInput End customer label related filter
Example
{"iccid": {"eq": "9876543212345678901"}}

SimList

Description

This type represents the response of a listSims request.

Fields
Field Name Description
items - [SIM] The list of Sims
nextToken - String The token which is required to query further results via listSims. See The nextToken principle
totalSims - Long! The total number of Sims for the given filter.
Example
{"test": 1}

SimListIntFilterInput

Description

This input represents an int based filter option for SIM list

Fields
Input Field Description
eq - Int Value is equal to eq
beginsWith - Int Value begins with beginsWith
in - [Int] Value is equal to an item of in
Example
{"eq": 42, "beginsWith": 42, "in": [42]}

SimListOrder

Description

This input represents the parameters to order a SimList when calling listSims

Possible values for each parameters are asc for ascending and desc for descending.

It is currently only possible to sort by one parameter. Sorting by several parameters does not produce the desired result.

Fields
Input Field Description
iccid - String Order by iccid
statusid - String Order by status. See List of possible SIM status
providerid - String Order by product. See List of provider ids
imei - String Order by IMEI
imsi - String Order by IMSI
msisdn - String Order by MSISDN
activation_timestamp - String Order by activation date
in_session_since - String Order by session duration
monthly_data_volume - String Order by monthly data volume
monthly_sms_mo - String Order by monthly SMS MO
monthly_sms_mt - String Order by monthly SMS MT
monthly_voice_mo - String Order by monthly outgoing voice seconds
monthly_voice_mo_limit - String Order by monthly voice mo limit
custom_field_1 - String Order by custom field 1
monthly_data_limit - String Order by configured data limit
previous_month_data_volume - String Order by previous month data volume
end_customer_label - String Order by the endcustomer label
Example
{"iccid": "asc"}

SimTransition

Description

This type represents a possible status transitions for the corresponding product

Fields
Field Name Description
fromstatusid - Int! The status ID from which the transition is to be carried out. See List of possible SIM status
tostatusid - Int! The status ID for which the transition is to be carried out. See List of possible SIM status
providerid - Int! The product id for which this transition is possible. See List of provider ids
Example
{"fromstatusid": 42, "tostatusid": 42, "providerid": 42}

Statistic

Description

Some data to be tracked on.

Fields
Field Name Description
totalSimCards - Int! Number of total sim cards
activeSimCards - Int! Number of active sim cards
currentMonthlyDataUsage - Long! Data usage for the current month
previousMonthDataUsage - Long! Data Usage from the previousMonth
Example
{
  "totalSimCards": 42,
  "activeSimCards": 42,
  "currentMonthlyDataUsage": 1707747614,
  "previousMonthDataUsage": 1707747614
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

StringFilterInput

Description

This input represents the text/string based filter options.

Fields
Input Field Description
eq - String Value is equal to eq
beginsWith - String Value begins with text of beginsWith
in - [String] Value is equal to an item of in
Example
{
  "eq": "xyz789",
  "beginsWith": "xyz789",
  "in": ["xyz789"]
}

UserAccount

Description

User account data

Fields
Field Name Description
id - String! The UUID of the user
email - String! The email address of the user
status - String! Account status: 'InvitationSent', 'InvitationExpired', 'Disabled' or 'HasAccess'
groups - [String] Permission groups. Available: 'Administrator', 'Observer' or 'Manager'
zoneinfo - String! Timezone of the user (e.g. Europe/Berlin)
locale - String! Defines the language of the portal (de or en)
Example
{
  "id": "abc123",
  "email": "abc123",
  "status": "abc123",
  "groups": ["xyz789"],
  "zoneinfo": "xyz789",
  "locale": "abc123"
}