> For the complete documentation index, see [llms.txt](https://docs.onomondo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.onomondo.com/readme/sims.md).

# SIMs

## Retrieve information for all SIMs

> Returns detailed information for all registered SIMs.\
> \
> {% hint style="info" %} Minimum package requirement for SIM location, modem model, and modem manufacturer information: \<strong>Fleet\</strong>\
> \
> Minimum package requirement for SIM alert threshold information: \<strong>Pro\</strong> {% endhint %}\
> Using parameters will focus the records returned in the response.

```json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims":{"get":{"summary":"Retrieve information for all SIMs","description":"Returns detailed information for all registered SIMs.\n\n{% hint style=\"info\" %} Minimum package requirement for SIM location, modem model, and modem manufacturer information: <strong>Fleet</strong>\n\nMinimum package requirement for SIM alert threshold information: <strong>Pro</strong> {% endhint %}\nUsing parameters will focus the records returned in the response.","parameters":[{"name":"next_page","in":"query","schema":{"type":"string"},"description":"Used for pagination of records."},{"name":"limit","in":"query","schema":{"type":"string"},"description":"The max number of records returned. Limit can be between 1 and 5000 records. Default is 1000 records."},{"name":"filter","in":"query","style":"deepObject","explode":true,"schema":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"description":"Filter SIMs based on various criteria. Can be provided as a single filter or multiple filters.\n\n**Single filter format**: `filter=key:value`\n\n**Multiple filters format**: `filter[]=key:value&filter[]=key2:value2`\n\nSupported filter types:\n\n**online** - Boolean filter for SIM online status\n- Format: `online:true` or `online:false`\n\n**activated** - Boolean filter for SIM activation status\n- Format: `activated:true` or `activated:false`\n\n**connector** - Filter by Connector name\n- Format: `connector:<connector-name>`\n\n**network_whitelist** - Filter by Network List name\n- Format: `network_whitelist:<whitelist-name>`\n"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Retrieve information for a specific SIM

> Returns detailed information for a specific SIM.\
> {% hint style="info" %} Minimum package requirement for SIM location, modem model, and modem manufacturer information: \<strong>Fleet\</strong>\
> \
> Minimum package requirement for SIM alert threshold information: \<strong>Pro\</strong> {% endhint %}\
> By default, we suggest to use the \*\*SIM ID\*\* that can be found on the SIM card itself or from \[SIMs page in the web app]\(<https://app.onomondo.com/sims).\\>
> You can also use the \*\*ICCID value\*\*, if that is available.\
> \
> Note that the \`location\` and \`device\_info\` fields are optional, meaning that they are only present if the information is available.

```json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims/{sim_id}":{"get":{"summary":"Retrieve information for a specific SIM","description":"Returns detailed information for a specific SIM.\n{% hint style=\"info\" %} Minimum package requirement for SIM location, modem model, and modem manufacturer information: <strong>Fleet</strong>\n\nMinimum package requirement for SIM alert threshold information: <strong>Pro</strong> {% endhint %}\nBy default, we suggest to use the **SIM ID** that can be found on the SIM card itself or from [SIMs page in the web app](https://app.onomondo.com/sims).\nYou can also use the **ICCID value**, if that is available.\n\nNote that the `location` and `device_info` fields are optional, meaning that they are only present if the information is available.","parameters":[{"name":"sim_id","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Find SIMs

> Retrieves a list of SIMs filtered by partial SIM ID, label, or exact ICCID match.\
> {% hint style="info" %} Minimum package requirement for SIM location, modem model, and modem manufacturer information: \<strong>Fleet\</strong>\
> \
> Minimum package requirement for SIM alert threshold information: \<strong>Pro\</strong> {% endhint %}

```json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims/find":{"get":{"summary":"Find SIMs","description":"Retrieves a list of SIMs filtered by partial SIM ID, label, or exact ICCID match.\n{% hint style=\"info\" %} Minimum package requirement for SIM location, modem model, and modem manufacturer information: <strong>Fleet</strong>\n\nMinimum package requirement for SIM alert threshold information: <strong>Pro</strong> {% endhint %}","parameters":[{"name":"search","in":"query","schema":{"type":"string"},"description":"A partial SIM id or label, as well as a complete ICCID.","required":true},{"name":"limit","in":"query","schema":{"type":"string"},"description":"Without this parameter the default is 10. Limit can be between 1 and 5000 records."},{"name":"offset","in":"query","schema":{"type":"string"},"description":"The number of first records returned. Used for pagination of records, otherwise will default to 0."}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Update specific SIM

> Updates configurable parameters for the specified SIM.\
> {% hint style="info" %} Minimum package requirement for updating SIM alert: \<strong>Pro\</strong> {% endhint %}\
> This request takes a JSON body. Only the properties that are being updated need to be included.

```json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims/{sim_id}":{"patch":{"summary":"Update specific SIM","description":"Updates configurable parameters for the specified SIM.\n{% hint style=\"info\" %} Minimum package requirement for updating SIM alert: <strong>Pro</strong> {% endhint %}\nThis request takes a JSON body. Only the properties that are being updated need to be included.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","nullable":true,"description":"A string alias of the SIM, null if no alias to be assigned."},"network_whitelist":{"type":"string","nullable":true,"description":"Name of the Network List attached, null if no Network List should be attached."},"imei_lock":{"type":"string","nullable":true,"description":"String IMEI of device the SIM should be locked to (if presented in network signaling) or a null value."},"connector":{"type":"string","nullable":true,"description":"Name of Connector attached, set to null if no Connector should be attached."},"activated":{"type":"boolean","description":"Boolean to activate and deactivate the SIM."},"data_limit":{"type":"object","nullable":true,"description":"Object that can set hard data limits to the SIM. When the limit is reached the device will not be able to send data until the time indicated by the property `resets_at`. If webhook is set up, usage-alert events will be triggered at alert_threshold and when total limit is reached.","required":["total","type"],"properties":{"total":{"type":"integer","minimum":500000,"description":"Data limit in bytes (minimum 500KB)."},"type":{"type":"string","enum":["minute","hourly","daily","monthly"],"description":"Time period for the data limit reset."},"alert_threshold":{"type":"integer","minimum":500000,"description":"Warning amount in bytes. Must be less than total. Triggers usage-alert event when reached (minimum 500KB)."}}},"tags":{"type":"array","items":{"type":"string"},"description":"An array of Tag IDs to be associated with a SIM. Tag IDs require string format and can be obtained using GET /tags endpoint. **Caution**: Include all Tags you want to keep plus any new ones, as this replaces the entire list of Tags."},"technologies":{"type":"object","description":"Object to control technology access. **Caution**: Ensure SIM is not connected to RAN when changing these settings.","properties":{"sms":{"type":"boolean","description":"Set to false to remove the ability to send SMS."},"2g_3g":{"type":"boolean","description":"Set to false to remove the ability to connect on 2G/3G."},"4g":{"type":"boolean","description":"Set to false to remove ability to connect to 4G."}}}}}}}},"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"}},{"name":"sim_id","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Bulk SIM Update

> Updates configuration parameters for multiple SIMs simultaneously.\
> \
> {% hint style="info" %} Minimum package requirement for updating SIM alert: \<strong>Pro\</strong> {% endhint %}\
> \
> This request takes a JSON body. Only the properties that are being updated needs to be included. All properties that can be updated by a single SIM update can be added to the bulk call.\
> \
> \*\*LIMIT: 20 SIMs per call\*\*\
> \
> \`sims\` is the only one field in the body, which consists of an array of SIM update objects.\
> \
> Each object needs to have the field \`id\`, which is the 9 character SIM ID.\
> \
> {% hint style="warning" %} ICCID is not accepted but can be connected to a SIM ID by taking the first 9 of the last 10 numbers of the ICCID. Here is an ICCID example with the SIM ID in bold:\
> \
> 8945738730-\_\_000001934\_\_-2 {% endhint %}

```json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims/bulk":{"patch":{"summary":"Bulk SIM Update","description":"Updates configuration parameters for multiple SIMs simultaneously.\n\n{% hint style=\"info\" %} Minimum package requirement for updating SIM alert: <strong>Pro</strong> {% endhint %}\n\nThis request takes a JSON body. Only the properties that are being updated needs to be included. All properties that can be updated by a single SIM update can be added to the bulk call.\n\n**LIMIT: 20 SIMs per call**\n\n`sims` is the only one field in the body, which consists of an array of SIM update objects.\n\nEach object needs to have the field `id`, which is the 9 character SIM ID.\n\n{% hint style=\"warning\" %} ICCID is not accepted but can be connected to a SIM ID by taking the first 9 of the last 10 numbers of the ICCID. Here is an ICCID example with the SIM ID in bold:\n\n8945738730-__000001934__-2 {% endhint %}","requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["sims"],"properties":{"sims":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"The SIM ID."},"label":{"type":"string","nullable":true,"description":"A string alias of the SIM, null if no alias to be assigned."},"network_whitelist":{"type":"string","nullable":true,"description":"Name of the Network List attached, null if no Network List should be attached."},"imei_lock":{"type":"string","nullable":true,"description":"String IMEI of device the SIM should be locked to (if presented in network signaling) or a null value."},"connector":{"type":"string","nullable":true,"description":"Name of Connector attached, set to null if no Connector should be attached."},"activated":{"type":"boolean","description":"Boolean to activate and deactivate the SIM."},"data_limit":{"type":"object","nullable":true,"description":"Object that can set hard data limits to the SIM. When the limit is reached the device will not be able to send data until the time indicated by the property `resets_at`. If webhook is set up, usage-alert events will be triggered at alert_threshold and when total limit is reached.","required":["total","type"],"properties":{"total":{"type":"integer","minimum":500000,"description":"Data limit in bytes (minimum 500KB)."},"type":{"type":"string","enum":["minute","hourly","daily","monthly"],"description":"Time period for the data limit reset."},"alert_threshold":{"type":"integer","minimum":500000,"description":"Warning amount in bytes. Must be less than total. Triggers usage-alert event when reached (minimum 500KB)."}}},"tags":{"type":"array","items":{"type":"string"},"description":"An array of Tag IDs to be associated with a SIM. Tag IDs require string format and can be obtained using GET /tags endpoint. **Caution**: Include all Tags you want to keep plus any new ones, as this replaces the entire list of Tags."},"technologies":{"type":"object","description":"Object to control technology access. **Caution**: Ensure SIM is not connected to RAN when changing these settings.","properties":{"sms":{"type":"boolean","description":"Set to false to remove the ability to send SMS."},"2g/3g":{"type":"boolean","description":"Set to false to remove the ability to connect on 2G/3G."},"4g":{"type":"boolean","description":"Set to false to remove ability to connect to 4G."}}}}}}}}}}},"parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string"}}}}}}}}}
```

## Bulk Apply SIM Operations

> Applies one or more operations to a set of SIMs in a single request. The\
> SIMs are selected by ID, by filter, by search, or by any combination of\
> the three.\
> \
> {% hint style="info" %}\
> Minimum package requirement for updating data limit: \<strong>Pro\</strong>\
> {% endhint %}\
> \
> \### Selecting the SIMs\
> \
> \- \`simIds\` — an explicit array of 9 character SIM IDs.\
> \- \`filter\` — the SIMs matching the filters, same filter keys as \`GET /sims\`.\
> \- \`search\` — query parameter, a partial SIM ID or label, or a complete ICCID.\
> \
> All three are combined. When \`simIds\` is sent, every requested SIM ID must\
> also match \`filter\`/\`search\` and be accessible with the API key, otherwise\
> the whole request is rejected with a \`403\`. When \`simIds\` is left out, the\
> operations are applied to \*\*every\*\* SIM matching \`filter\`/\`search\`, so\
> sending neither \`simIds\` nor \`filter\` nor \`search\` updates the whole fleet.\
> \
> {% hint style="warning" %}\
> ICCID is not accepted as a SIM ID but can be converted by taking the first\
> 9 of the last 10 numbers of the ICCID. Here is an ICCID example with the\
> SIM ID in bold:\
> \
> 8945738730-\_\_000001934\_\_-2\
> {% endhint %}\
> \
> \### Operations\
> \
> Each entry in \`ops\` is one change: \`path\` is the property, \`op\` is how to\
> apply it, \`value\` is the new value.\
> \
> \| \`path\` | \`op\` | \`value\` |\
> \| --- | --- | --- |\
> \| \`/label\` | \`set\` | String, max 255 characters, or \`null\`. |\
> \| \`/connector\` | \`set\` | Name of an existing Connector (\`^\[-\_a-zA-Z0-9]{3,255}$\`), or \`null\` to detach. |\
> \| \`/network\_whitelist\` | \`set\` | Name of an existing Network List (\`^\[-\_a-zA-Z0-9]{3,255}$\`), or \`null\` to detach. |\
> \| \`/tags\` | \`set\`, \`add\`, \`remove\` | Array of Tag IDs (UUID). \`set\` replaces the whole list, \`add\`/\`remove\` change part of it. All Tag IDs must exist in the organization. |\
> \| \`/technologies\` | \`set\`, \`add\`, \`remove\` | Array of \`sms\`, \`2g\_3g\`, \`4g\`. \`set\` enables exactly the listed technologies and disables the rest, \`add\`/\`remove\` only touch the listed ones. |\
> \| \`/data\_limit\` | \`set\` | Object, see below, or \`null\`. |\
> \| \`/cost\_alert\` | \`set\` | Object, see below, or \`null\`. |\
> \
> A \`path\` must not appear twice with conflicting operations: combining \`set\`\
> with \`add\`/\`remove\` on \`/tags\` or \`/technologies\` in the same request is\
> rejected with a \`422\`.\
> \
> Errors are returned as \`{"error": "\<reason>"}\`, with a \`details\` object on\
> validation errors.\
> \
> \*\*\`/data\_limit\`\*\*\
> \
> \`\`\`json\
> { "type": "monthly", "total": 1000000000, "alert\_threshold": 500000000 }\
> \`\`\`\
> \
> \- \`total\` — bytes, minimum \`500000\`. Must be sent together with \`type\`.\
> \- \`type\` — \`minute\`, \`hourly\`, \`daily\`, \`monthly\`\
> \- \`alert\_threshold\` — bytes, minimum \`500000\`, triggers the \`usage-alert\`\
> &#x20; webhook event when reached. Requires the webhooks feature.\
> \- \`null\`, or \`total: null\`, resets the SIMs to the default data limit of the\
> &#x20; organization's package instead of leaving them without a limit.\
> \
> \*\*\`/cost\_alert\`\*\*\
> \
> \`\`\`json\
> { "threshold": 10, "period": "monthly" }\
> \`\`\`\
> \
> \- \`threshold\` — positive number, the cost that triggers the alert.\
> \- \`period\` — \`daily\` or \`monthly\`, required when \`threshold\` is set.\
> \- \`null\`, or \`threshold: null\`, removes the cost alert.\
> \
> \### Filters\
> \
> \`filter\` takes a single \`key:value\` string or an array of them. Values of\
> the same key are combined with \*\*OR\*\*, different keys with \*\*AND\*\*, e.g.\
> \`\["connector:foo", "connector:bar", "activated:true"]\` selects activated\
> SIMs on either Connector.\
> \
> \| Filter key | Value |\
> \| --- | --- |\
> \| \`sim\_id\` | One or more 9 character SIM IDs, comma separated. |\
> \| \`iccid\` | One or more ICCIDs, comma separated. |\
> \| \`imsi\` | One or more IMSIs, comma separated. |\
> \| \`ipv4\` | One or more IPv4 addresses, comma separated. |\
> \| \`label\` | One or more exact labels, comma separated. |\
> \| \`tags\` | Tag name, or \`none\` for SIMs without Tags. |\
> \| \`tag\_types\` | \`is\_read\` or \`is\_write\`. |\
> \| \`connector\` | Connector name, or \`none\` for SIMs without a Connector. |\
> \| \`network\_whitelist\` | Network List name, or \`none\` for SIMs without a Network List. |\
> \| \`technologies\` | \`sms\`, \`2g\_3g\` or \`4g\`, matches SIMs with that technology enabled. |\
> \| \`online\` | \`true\` or \`false\`. |\
> \| \`activated\` | \`true\` or \`false\`. |\
> \| \`last\_came\_online\_at\` | ISO timestamp, matches SIMs last online at or after it. |\
> \| \`mcc\` | 3 digit MCC, or \`none\` for SIMs without a current network. |\
> \| \`country\_code\` | 2 letter uppercase country code, or \`none\`. |\
> \| \`network\_name\` | Network name, or \`none\`. |\
> \| \`is\_softsim\` | \`true\` or \`false\`. |\
> \| \`type\` | \`physical\`, \`softsim\`, \`uicc\_card\`, \`uicc\_chip\`, \`uicc\_softsim\`, \`euicc\_card\`, \`euicc\_chip\` or \`euicc\_smdpp\`. |\
> \
> A comma separated filter value can hold at most 5000 entries.\
> \
> \### Limits\
> \
> Any number of operations can be sent in one request, each is applied to\
> every selected SIM. API keys restricted through Tags can select at most\
> \*\*5000 SIMs per call\*\*, cannot change Tags in bulk, and can only update\
> SIMs they have write access to.<br>

````json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims/bulk-apply":{"patch":{"summary":"Bulk Apply SIM Operations","description":"Applies one or more operations to a set of SIMs in a single request. The\nSIMs are selected by ID, by filter, by search, or by any combination of\nthe three.\n\n{% hint style=\"info\" %}\nMinimum package requirement for updating data limit: <strong>Pro</strong>\n{% endhint %}\n\n### Selecting the SIMs\n\n- `simIds` — an explicit array of 9 character SIM IDs.\n- `filter` — the SIMs matching the filters, same filter keys as `GET /sims`.\n- `search` — query parameter, a partial SIM ID or label, or a complete ICCID.\n\nAll three are combined. When `simIds` is sent, every requested SIM ID must\nalso match `filter`/`search` and be accessible with the API key, otherwise\nthe whole request is rejected with a `403`. When `simIds` is left out, the\noperations are applied to **every** SIM matching `filter`/`search`, so\nsending neither `simIds` nor `filter` nor `search` updates the whole fleet.\n\n{% hint style=\"warning\" %}\nICCID is not accepted as a SIM ID but can be converted by taking the first\n9 of the last 10 numbers of the ICCID. Here is an ICCID example with the\nSIM ID in bold:\n\n8945738730-__000001934__-2\n{% endhint %}\n\n### Operations\n\nEach entry in `ops` is one change: `path` is the property, `op` is how to\napply it, `value` is the new value.\n\n| `path` | `op` | `value` |\n| --- | --- | --- |\n| `/label` | `set` | String, max 255 characters, or `null`. |\n| `/connector` | `set` | Name of an existing Connector (`^[-_a-zA-Z0-9]{3,255}$`), or `null` to detach. |\n| `/network_whitelist` | `set` | Name of an existing Network List (`^[-_a-zA-Z0-9]{3,255}$`), or `null` to detach. |\n| `/tags` | `set`, `add`, `remove` | Array of Tag IDs (UUID). `set` replaces the whole list, `add`/`remove` change part of it. All Tag IDs must exist in the organization. |\n| `/technologies` | `set`, `add`, `remove` | Array of `sms`, `2g_3g`, `4g`. `set` enables exactly the listed technologies and disables the rest, `add`/`remove` only touch the listed ones. |\n| `/data_limit` | `set` | Object, see below, or `null`. |\n| `/cost_alert` | `set` | Object, see below, or `null`. |\n\nA `path` must not appear twice with conflicting operations: combining `set`\nwith `add`/`remove` on `/tags` or `/technologies` in the same request is\nrejected with a `422`.\n\nErrors are returned as `{\"error\": \"<reason>\"}`, with a `details` object on\nvalidation errors.\n\n**`/data_limit`**\n\n```json\n{ \"type\": \"monthly\", \"total\": 1000000000, \"alert_threshold\": 500000000 }\n```\n\n- `total` — bytes, minimum `500000`. Must be sent together with `type`.\n- `type` — `minute`, `hourly`, `daily`, `monthly`\n- `alert_threshold` — bytes, minimum `500000`, triggers the `usage-alert`\n  webhook event when reached. Requires the webhooks feature.\n- `null`, or `total: null`, resets the SIMs to the default data limit of the\n  organization's package instead of leaving them without a limit.\n\n**`/cost_alert`**\n\n```json\n{ \"threshold\": 10, \"period\": \"monthly\" }\n```\n\n- `threshold` — positive number, the cost that triggers the alert.\n- `period` — `daily` or `monthly`, required when `threshold` is set.\n- `null`, or `threshold: null`, removes the cost alert.\n\n### Filters\n\n`filter` takes a single `key:value` string or an array of them. Values of\nthe same key are combined with **OR**, different keys with **AND**, e.g.\n`[\"connector:foo\", \"connector:bar\", \"activated:true\"]` selects activated\nSIMs on either Connector.\n\n| Filter key | Value |\n| --- | --- |\n| `sim_id` | One or more 9 character SIM IDs, comma separated. |\n| `iccid` | One or more ICCIDs, comma separated. |\n| `imsi` | One or more IMSIs, comma separated. |\n| `ipv4` | One or more IPv4 addresses, comma separated. |\n| `label` | One or more exact labels, comma separated. |\n| `tags` | Tag name, or `none` for SIMs without Tags. |\n| `tag_types` | `is_read` or `is_write`. |\n| `connector` | Connector name, or `none` for SIMs without a Connector. |\n| `network_whitelist` | Network List name, or `none` for SIMs without a Network List. |\n| `technologies` | `sms`, `2g_3g` or `4g`, matches SIMs with that technology enabled. |\n| `online` | `true` or `false`. |\n| `activated` | `true` or `false`. |\n| `last_came_online_at` | ISO timestamp, matches SIMs last online at or after it. |\n| `mcc` | 3 digit MCC, or `none` for SIMs without a current network. |\n| `country_code` | 2 letter uppercase country code, or `none`. |\n| `network_name` | Network name, or `none`. |\n| `is_softsim` | `true` or `false`. |\n| `type` | `physical`, `softsim`, `uicc_card`, `uicc_chip`, `uicc_softsim`, `euicc_card`, `euicc_chip` or `euicc_smdpp`. |\n\nA comma separated filter value can hold at most 5000 entries.\n\n### Limits\n\nAny number of operations can be sent in one request, each is applied to\nevery selected SIM. API keys restricted through Tags can select at most\n**5000 SIMs per call**, cannot change Tags in bulk, and can only update\nSIMs they have write access to.\n","parameters":[{"name":"Content-Type","in":"header","schema":{"type":"string"}},{"name":"search","in":"query","schema":{"type":"string"},"description":"Narrows the selection to SIMs matching a partial SIM ID or label, or a complete ICCID."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"ops":{"type":"array","description":"The operations to apply to every selected SIM. An empty or missing array changes nothing.","items":{"type":"object","required":["path","op","value"],"properties":{"path":{"type":"string","enum":["/label","/connector","/network_whitelist","/tags","/data_limit","/cost_alert","/technologies"],"description":"The SIM property to change."},"op":{"type":"string","enum":["set","add","remove"],"description":"How to apply `value`. `/tags` and `/technologies` accept `set`, `add` and `remove`, every other path accepts `set` only."},"value":{"description":"The value to apply, of the type given by `path`."}}}},"simIds":{"type":"array","items":{"type":"string"},"description":"The SIM IDs to update. Leave out to update every SIM matching `filter` and `search`."},"filter":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}],"description":"Selects the SIMs to update, using the same filter keys as `GET /sims`. Also verifies access when `simIds` is sent."}}}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid body: unknown `path`, an operation not allowed on the given `path`, a value of the wrong type, or a property the organization's package does not include.","content":{"application/json":{"schema":{"type":"object"}}}},"403":{"description":"One or more requested SIMs or Tags are not accessible with the API key or do not exist, or the API key is restricted through Tags and tried to change Tags in bulk.","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"The requested Connector or Network List does not exist.","content":{"application/json":{"schema":{"type":"object"}}}},"422":{"description":"`set` was combined with `add`/`remove` on `/tags` or `/technologies` (`invalid_tags_request`, `invalid_technologies_request`), or more than 5000 SIMs were requested with an API key restricted through Tags.","content":{"application/json":{"schema":{"type":"object"}}}},"503":{"description":"The update did not finish in time. Retry with fewer SIMs or fewer operations per call.","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
````

## Add Tag to list of Tags of a SIM

> Adds the Tag with the Tag ID to the given SIM. Will throw a \`400\` error if the Tag already is associated with the SIM.

```json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims/{sim_id}/tags/{tag_id}":{"put":{"summary":"Add Tag to list of Tags of a SIM","description":"Adds the Tag with the Tag ID to the given SIM. Will throw a `400` error if the Tag already is associated with the SIM.","requestBody":{"content":{}},"parameters":[{"name":"sim_id","in":"path","schema":{"type":"string"},"required":true},{"name":"tag_id","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```

## Remove Tag from list of Tags of a SIM

> Removes the Tag with Tag ID from the given SIM. Will throw a \`400\` error if the Tag is not currently associated with the SIM.

```json
{"openapi":"3.0.0","info":{"title":"Onomondo's API","version":"1.0.0"},"servers":[{"url":"https://api.onomondo.com"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"apiKey","in":"header","name":"Authorization"}}},"paths":{"/sims/{sim_id}/tags/{tag_id}":{"delete":{"summary":"Remove Tag from list of Tags of a SIM","description":"Removes the Tag with Tag ID from the given SIM. Will throw a `400` error if the Tag is not currently associated with the SIM.","parameters":[{"name":"sim_id","in":"path","schema":{"type":"string"},"required":true},{"name":"tag_id","in":"path","schema":{"type":"string"},"required":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"type":"object"}}}}}}}}}
```
