{"openapi":"3.0.0","info":{"title":"Hologram REST API v1","description":"The Hologram HTTP API is a REST-style interface for managing Hologram  devices, accounts, and cloud data.\n\nUsing the Hologram REST API, you can activate  SIMs, get your devices approximate location, send SMS to your devices, update  a device's usage limit, and much more.\n\n## Authentication\n\nHologram supports  **HTTP Basic authentication** using API keys. Simply set the username of the  request to `apikey`. The password field is the API key itself.\n\nYou can find  your API key on the Hologram Dashboard under [Account Settings](https://dashboard.hologram.io/settings/api).\n \nYour API key gives you access to your personal account, as well as any organizations  you are a member of. Make sure you don't store your API key in a publicly accessible  place like GitHub. If you are a member of multiple organizations, many endpoints  accept an `orgid` argument to filter for devices or other objects within a specific  organization.\n\nYou can find your `orgid` by following [this guide from our  Help Center](https://support.hologram.io/hc/en-us/articles/360035421234-What-is-my-organization-ID-orgid).\n \n### Header Example\n\n```\ncurl --verbose GET \\\n'https://dashboard.hologram.io/api/1/users/me'  \\\n-u apikey:YOUR_API_KEY\n```\n\nYou can also base64 encode \"apikey:YOUR_API_KEY\"  and include it directly in the header.\n\n```\ncurl --verbose GET \\\n'https://dashboard.hologram.io/api/1/users/me'  \\\n--header \"Authorization: Basic BASE64(apikey:YOUR_API_KEY)\"\n```\n\n##  Requests\n\nRequest bodies can be provided in either JSON or form-urlencoded  formats. Please note that the examples in this documentation will only display  JSON bodies.\n\n### **JSON body**\n\n```\ncurl --verbose --request POST \\\n --header \"Content-Type: application/json\" \\\n--header \"Authorization: Basic  BASE64(apikey:YOUR_API_KEY)\" \\\n--data '{\"deviceid\": 56668, \"body\": \" Hello device!\"}' \\\n'https://dashboard.hologram.io/api/1/sms/incoming'\n```\n \n### **form-urlencoded body**\n\n```\ncurl --verbose --request POST \\\n--header  \"Content-Type: application/x-form-urlencoded\" \\\n--header \"Authorization:  Basic BASE64(apikey:YOUR_API_KEY)\" \\\n--data 'deviceid=56668&body=Hello%20device!'  \\\n'https://dashboard.hologram.io/api/1/sms/incoming'\n```\n\n## Responses\n \nAll API responses are returned as JSON objects with the following fields:\n\n * `success` (boolean) - Indicates whether the request was successful.\n* `data`  (object or array) - Contains the requested data or information about the operation  that was performed. Only present when `success` is true.\n* `error` (string)  - Information about why the request failed. Only present when `success` is false.\n \nMost GET responses will also include the following fields if a limit is included  as part of the query string:\n\n* `limit` (number) - The query limit, some have  this value built in and others often have a maximum value that the limit can  be\n* `size` (number) - The number of values returned by the query\n* `continues`  (boolean, optional) - This is only returned if there are more values than were  returned\n* `links` (array) - Contains information related to the query performed\n   * `path` (string) - The API endpoint path\n  * `base` (string) - API base URL\n   * `next` (string) - URL with query string to get the next results\n\nNote that  all dates and times are returned in UTC.\n\n## Rate Limiting\n\nIn order to  provide a good quality of service to all of our customers, we enforce a rate  limit on all API requests.\n\nIf you exceed the rate limit you will receive  a HTTP 429 response with a JSON response body like this:\n\n```\n{\n  \"success\" :false,\n  \"error\":\"API rate limit exceeded\"\n}\n```\n\nIf you receive this  response, you should refrain from making requests for 5-10 seconds and then  retry the request.\n\nHologram's REST API provides methods to perform many requests  in bulk. For example, you can change the data plans of multiple SIMs at once  using https://dashboard.hologram.io/api/1/links/cellular/changeplan.\n\nIf there  is request you would like to make in bulk but cannot, please reach out to [support@hologram.io](mailto:support@hologram.io)  for assistance.","version":"1"},"servers":[{"url":"https://dashboard.hologram.io/api/1","description":"Hologram REST API v1"}],"paths":{"/asyncchangerequests":{"get":{"tags":["Async Change Requests"],"summary":"List async change requests","description":"Returns a paginated list of async change requests. Async change requests represent background operations such as plan changes and SIM configuration updates that are processed asynchronously. Non-super-admin callers only receive requests for organizations they can access.","operationId":"listAsyncChangeRequests","parameters":[{"name":"ids","in":"query","description":"Comma-separated list of request IDs to fetch","required":false,"schema":{"type":"string"}},{"name":"parent_id","in":"query","description":"Filter by parent request ID","required":false,"schema":{"type":"integer"}},{"name":"orgid","in":"query","description":"Filter by organization ID","required":false,"schema":{"type":"integer"}},{"name":"userid","in":"query","description":"Filter by user ID","required":false,"schema":{"type":"integer"}},{"name":"request_type","in":"query","description":"Filter by request type","required":false,"schema":{"type":"string","enum":["plan_change","euicc_audit","sim_configuration_update","sim_state_pause","sim_state_unpause","sim_state_activation"]}},{"name":"reference_type","in":"query","description":"Filter by the type of object being changed","required":false,"schema":{"type":"string","enum":["device","link","simcard","sim_configuration"]}},{"name":"reference_id","in":"query","description":"Filter by the ID of the object being changed","required":false,"schema":{"type":"integer"}},{"name":"deviceids","in":"query","description":"Comma-separated list of device IDs; returns async records referencing those devices (reference_type=device) or their cellular links (reference_type=link). Resolves link IDs via CellularLinks before querying. Can be combined with other filters (e.g. orgid, states, reference_type); all filters are ANDed together.","required":false,"schema":{"type":"string"}},{"name":"states[]","in":"query","description":"Filter by one or more states (repeat parameter for multiple values)","required":false,"schema":{"type":"array","items":{"type":"string","enum":["initialized","in_progress","complete","complete_with_errors","partially_complete","error","canceled","complete_after_cancel"]}}},{"name":"start_after","in":"query","description":"Return requests started after this time (Unix timestamp or datetime string)","required":false,"schema":{"type":"string"}},{"name":"start_before","in":"query","description":"Return requests started before this time (Unix timestamp or datetime string)","required":false,"schema":{"type":"string"}},{"name":"startafter","in":"query","description":"Return results with ID less than this value (cursor-based pagination, ordered by ID descending)","required":false,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Maximum number of results to return (default 25, max 1000)","required":false,"schema":{"type":"integer","maximum":1000,"example":25}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAsyncChangeRequestsResponse"}}}},"400":{"description":"Invalid filter value"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"List async change requests"},"href":"/api/1/asyncchangerequests/get"}}},"/asyncchangerequests/{requestId}":{"get":{"tags":["Async Change Requests"],"summary":"Get a single async change request by ID","description":"Returns the full detail for a single async change request, including its child request IDs and decoded metadata.","operationId":"getAsyncChangeRequest","parameters":[{"name":"requestId","in":"path","description":"Async change request ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsyncChangeRequestResponse"}}}},"400":{"description":"Invalid organization or unable to access"},"401":{"description":"Unauthorized"},"404":{"description":"Request not found"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get a single async change request by ID"},"href":"/api/1/asyncchangerequests/requestId/get"}}},"/organizations/{orgId}/statements":{"get":{"tags":["Organizations"],"summary":"List billing statements for an organization","description":"Get billing statement records that match the passed in parameters","operationId":"listBillingStatements","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"Filter by statement ID","required":false,"schema":{"type":"integer"}},{"name":"report_start_date","in":"query","description":"Filter by billing period start date","required":false,"schema":{"type":"string","format":"date"}},{"name":"startafter","in":"query","description":"Return results with ID less than this value (cursor-based pagination, ordered by ID descending)","required":false,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Maximum number of results to return (default 60)","required":false,"schema":{"type":"integer","example":60}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListBillingStatementsResponse"}}}},"400":{"description":"No permission to access billing on this organization"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Billing","x-mint":{"metadata":{"sidebarTitle":"List billing statements for an organization"},"href":"/api/1/organizations/orgId/statements/get"}}},"/organizations/{orgId}/statements/{statementId}/csv":{"get":{"tags":["Organizations"],"summary":"Download a billing statement as a CSV file","description":"Get a billing statement stream from DB (regenerated CSV)","operationId":"getBillingStatementCsv","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer"}},{"name":"statementId","in":"path","description":"Billing statement ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"CSV file download","content":{"text/csv":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"No billing permission or statement not found"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Billing","x-mint":{"metadata":{"sidebarTitle":"Download a billing statement as a CSV file"},"href":"/api/1/organizations/orgId/statements/statementId/csv/get"}}},"/csr/data":{"get":{"tags":["Devices"],"summary":"List cloud messages","description":"Returns a paginated list of cloud messages","operationId":"listCsrData","parameters":[{"name":"deviceid","in":"query","description":"Filter by device ID","required":false,"schema":{"type":"integer"}},{"name":"deviceids","in":"query","description":"Comma-separated list of device IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"timestart","in":"query","description":"Filter messages logged after this timestamp (Unix epoch)","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Filter messages logged before this timestamp (Unix epoch)","required":false,"schema":{"type":"integer"}},{"name":"topicname","in":"query","description":"Filter by a single topic name","required":false,"schema":{"type":"string"}},{"name":"topicnames","in":"query","description":"Filter by multiple topic names (comma-separated)","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of results to return","required":false,"schema":{"type":"integer"}},{"name":"startafter","in":"query","description":"Return results after the record with this ID (cursor-based pagination)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CSRDataMessageListResponse"}}}},"401":{"description":"Unauthorized"},"503":{"description":"Endpoint temporarily disabled"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Cloud messaging","x-mint":{"metadata":{"sidebarTitle":"List cloud messages"},"href":"/api/1/csr/data/get"}}},"/csr/data/{recordId}":{"get":{"tags":["Devices"],"summary":"Single cloud message","description":"Alias of GET /data/messages/{recordId}.","operationId":"getCsrDataEntry","parameters":[{"name":"recordId","in":"path","description":"Record ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CSRDataMessageResponse"}}}},"400":{"description":"Invalid record ID"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Cloud messaging","x-mint":{"metadata":{"sidebarTitle":"Single cloud message"},"href":"/api/1/csr/data/recordId/get"}}},"/csr/tags":{"get":{"tags":["Devices"],"summary":"Get matching cloud messaging topics/tags","description":"Returns a paginated list of tags used on device data messages","operationId":"listCsrTags","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return","required":false,"schema":{"type":"integer"}},{"name":"startafter","in":"query","description":"Return results after this cursor value","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"type":"string"}}},"type":"object"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Cloud messaging","x-mint":{"metadata":{"sidebarTitle":"Get matching cloud messaging topics/tags"},"href":"/api/1/csr/tags/get"}}},"/links/cellular/bulkclaim":{"post":{"tags":["Devices"],"summary":"Activate devices (bulk)","description":"Activate SIMs by ICCID range, individual ICCID list, or EID range. Maximum of 2,500 SIMs per request. Once a SIM is activated, you can begin passing data. `plan` and `zone` are required for all live activations.","operationId":"bulkClaimCellularLinks","requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sims":{"description":"List of SIM ICCIDs to activate. Exactly one of sims, simrange, or eidrange is required.","type":"array","items":{"type":"string"}},"simrange":{"description":"Inclusive ICCID range to activate, formatted as {first}-{last}. Exactly one of sims, simrange, or eidrange is required.","type":"string","example":"89330123456789012345-89330123456789012365"},"eidrange":{"description":"Inclusive EID range to activate, formatted as {first}-{last}. Exactly one of sims, simrange, or eidrange is required.","type":"string"},"plan":{"description":"Data plan ID to assign to each activated SIM. Required for live activations.","type":"integer"},"zone":{"description":"Availability zone for the plan. Required for live activations.","type":"string","example":"global"},"overage_limit":{"description":"Data overage limit in bytes. -1 for unlimited.","type":"integer"},"smslimit":{"description":"SMS limit. -1 for unlimited.","type":"number"},"threshold":{"description":"Data alert threshold in bytes. An alert is triggered when usage exceeds this value.","type":"number"},"tagid":{"description":"Tag ID to apply to every activated device.","type":"integer"},"invalidatePreflightSims":{"description":"When true, SIMs currently in preflight (test mode) are treated as new live activations rather than test-to-live transitions. Preflight plan and zone are replaced with the values provided in this request.","type":"boolean"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkClaimCellularLinksResponse"}}}},"400":{"description":"Bad request — missing or invalid sims/simrange/eidrange, plan/zone required for live activation, or SIM limit exceeded"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Activate devices (bulk)"},"href":"/api/1/links/cellular/bulkclaim/post"}}},"/links/cellular/updatelocation":{"post":{"tags":["Cellular Links"],"summary":"Update SIM location via carrier backend","description":"Triggers a location update for the matching SIMs via the carrier backend. Requires access to the specified links. Not supported by all carriers.","operationId":"updateSimLocation","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["linkids"],"properties":{"linkids":{"description":"List of cellular link IDs to update (max 10 per request; super admins may submit up to 1000)","type":"array","items":{"type":"integer"},"maxItems":10,"minItems":1}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"400":{"description":"Bad request — possible errors: \"Specify at least one filter for selecting SIMs to update\" (no linkids), \"No links selected\" (none found), \"Must select no more than 10 links\" (batch too large for non-super-admins; limit is 1000 for super admins), \"There were invalid links\" (inaccessible IDs), \"Some links are not able to update location due to carrier limitations\" (carrier capability)","content":{"application/json":{"schema":{"oneOf":[{"description":"Simple error — missing params, no links found, or too many links","required":["success","error"],"properties":{"success":{"type":"boolean","example":false},"error":{"type":"string","example":"No links selected"}},"type":"object"},{"description":"Per-link error — inaccessible link IDs or unsupported carrier; data maps each affected link ID to its error message","required":["success","error","data"],"properties":{"success":{"type":"boolean","example":false},"error":{"type":"string","example":"There were invalid links"},"data":{"description":"Map of link ID to error message","type":"object","example":{"99":"Invalid Link"},"additionalProperties":{"type":"string"}}},"type":"object"}]}}}},"429":{"description":"Too many requests — rate limit exceeded for location updates"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Update SIM location via carrier backend"},"href":"/api/1/links/cellular/updatelocation/post"}}},"/devices/batch/state":{"get":{"tags":["Devices"],"summary":"Get bulk state change job status","description":"Get the status of all current bulk state change jobs. State changes can take time to process for large numbers of devices. If the org does not have a plan that supports seeing activity history, this endpoint will return a 403.","operationId":"getDeviceBatchStateJobs","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"success":{"type":"boolean"},"data":{"properties":{"tasks":{"type":"array","items":{"properties":{"job_id":{"type":"integer"},"requester_org_name":{"type":"string"},"requester_first_name":{"type":"string"},"requester_last_name":{"type":"string"},"timestamp_start":{"type":"string","format":"date-time"},"timestamp_end":{"type":"string","format":"date-time"},"device_count":{"type":"integer"},"action":{"type":"string"},"status":{"type":"string"},"source":{"type":"string"}},"type":"object"}},"startAfterIds":{"type":"array","items":[]},"totalPages":{"type":"integer"},"totalTasks":{"type":"integer"}},"type":"object"}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"},"403":{"description":"Organization plan does not support activity history"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get bulk state change job status"},"href":"/api/1/devices/batch/state/get"}},"post":{"tags":["Devices"],"summary":"Batch change device state","description":"Create a batch job to change the state of a large set of devices. Accepts device IDs directly or a bulk filter criteria. Returns a list of tasks for the batch runner.","operationId":"createDeviceChangeStateTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["state"],"properties":{"state":{"description":"New state: pause, live, or deactivate","type":"string"},"deviceids":{"description":"List of device IDs to update","type":"array","items":{"type":"integer"}},"deviceFilters":{"description":"Bulk selection filter criteria (alternative to deviceids)","type":"object"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchJobResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Batch change device state"},"href":"/api/1/devices/batch/state/post"}}},"/devices":{"get":{"tags":["Devices"],"summary":"List devices","description":"Retrieve a list of devices with their detailed information including profile information (cellular links), session data, and metadata. The devices are returned sorted by creation date, with the most recent devices appearing first. Use the `limit` and `startafter` parameters together for cursor-based pagination through large device lists.","operationId":"getDevices","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Maximum number of results to return (max 5000)","required":false,"schema":{"type":"integer","maximum":5000,"example":50}},{"name":"startafter","in":"query","description":"Return results after the record with this ID (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"slim","in":"query","description":"When set to 1, return a compact response with fewer fields","required":false,"schema":{"type":"boolean"}},{"name":"withlocation","in":"query","description":"When true, include last known location data in each device record (default: true)","required":false,"schema":{"type":"boolean"}},{"name":"states","in":"query","description":"Comma-separated list of device states to filter by (e.g. LIVE,PAUSED-USER,CONNECTED)","required":false,"schema":{"type":"string"}},{"name":"ids","in":"query","description":"Comma-separated list of device IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"tagid","in":"query","description":"Filter results to devices with this tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagids","in":"query","description":"Comma-separated list of tag IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"tagname","in":"query","description":"Filter results to devices with this tag name","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Filter results to devices matching this exact name","required":false,"schema":{"type":"string"}},{"name":"imei","in":"query","description":"Filter results to devices with this IMEI","required":false,"schema":{"type":"string"}},{"name":"linkid","in":"query","description":"Filter results to devices with this cellular link ID","required":false,"schema":{"type":"integer"}},{"name":"linkids","in":"query","description":"Comma-separated list of cellular link IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"planid","in":"query","description":"Filter results to devices subscribed to this data plan ID","required":false,"schema":{"type":"integer"}},{"name":"iccid","in":"query","description":"Filter results to devices with this ICCID","required":false,"schema":{"type":"string"}},{"name":"iccids","in":"query","description":"Comma-separated list of ICCIDs to filter by","required":false,"schema":{"type":"string"}},{"name":"sim","in":"query","description":"Alias for iccid — filter results to devices with this ICCID","required":false,"schema":{"type":"string"}},{"name":"sims","in":"query","description":"Alias for iccids — comma-separated list of ICCIDs to filter by","required":false,"schema":{"type":"string"}},{"name":"imsi","in":"query","description":"Filter results to devices with this IMSI on their cellular link","required":false,"schema":{"type":"string"}},{"name":"msisdn","in":"query","description":"Filter results to devices with this MSISDN on their cellular link","required":false,"schema":{"type":"string"}},{"name":"simcardid","in":"query","description":"Filter results to devices with this SIM card ID","required":false,"schema":{"type":"integer"}},{"name":"eid","in":"query","description":"Filter results to devices with this EID","required":false,"schema":{"type":"string"}},{"name":"eids","in":"query","description":"Comma-separated list of EIDs to filter by","required":false,"schema":{"type":"string"}},{"name":"eidrange","in":"query","description":"Filter by EID range in \"start-end\" format","required":false,"schema":{"type":"string"}},{"name":"showHidden","in":"query","description":"When true, include hidden devices in results","required":false,"schema":{"type":"integer"}},{"name":"phone","in":"query","description":"Filter results to devices with this phone number","required":false,"schema":{"type":"string"}},{"name":"tunnelable","in":"query","description":"Filter results to devices with this tunnelable flag value","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDevicesResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"List devices"},"href":"/api/1/devices/get"}}},"/devices/pages":{"get":{"tags":["Devices"],"summary":"List devices (paginated)","description":"Retrieve pagination information for devices retrieved from `/devices` for organizations with many devices. This endpoint will return empty data if there are fewer devices than the limit specified.","operationId":"getDevicePages","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Maximum number of results to return (max 5000)","required":false,"schema":{"type":"integer","maximum":5000,"example":5000}},{"name":"states","in":"query","description":"Comma-separated list of network states to filter by.","required":false,"schema":{"type":"string"},"example":"LIVE,LIVE-PENDING,PAUSED-USER,PAUSED-SYS,PAUSED-PENDING-USER,PAUSED-PENDING-SYS,INACTIVE,TEST-ACTIVATE,TEST-ACTIVATE-PENDING,DEAD,DEAD-PENDING"},{"name":"deviceids","in":"query","description":"Comma-separated list of device IDs to include","required":false,"schema":{"type":"string"}},{"name":"tagid","in":"query","description":"Filter results to devices with this tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagids","in":"query","description":"Comma-separated list of tag IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"linkids","in":"query","description":"Comma-separated list of cellular link IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"sims","in":"query","description":"Comma-separated list of SIM identifiers to filter by","required":false,"schema":{"type":"string"}},{"name":"simrange","in":"query","description":"SIM range to filter by, formatted as start-end","required":false,"schema":{"type":"string"}},{"name":"devicesPerPage","in":"query","description":"Number of devices per page; used to compute page boundary IDs. Defaults to limit minus 1 if not provided.","required":false,"schema":{"type":"integer"}},{"name":"showHidden","in":"query","description":"When true, include hidden devices in results","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"description":"Maximum number of results requested","type":"integer"},"size":{"description":"Number of page boundaries returned","type":"integer"},"continues":{"description":"Whether more results exist beyond this page","type":"boolean"},"data":{"description":"Page boundary device IDs. Pass each startAfterId as the startafter parameter to GET /devices to fetch that page.","type":"array","items":{"properties":{"startAfterId":{"description":"Device ID marking the start of a page boundary","type":"integer"}},"type":"object"}}},"type":"object"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"List devices (paginated)"},"href":"/api/1/devices/pages/get"}}},"/devices/count":{"get":{"tags":["Devices"],"summary":"Get device count","description":"Returns the total number of devices for the organization.","operationId":"getDeviceCount","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"tagid","in":"query","description":"Single tag ID to filter by.","required":false,"schema":{"type":"integer"},"example":101},{"name":"tagids","in":"query","description":"Comma-separated list of tag IDs.","required":false,"schema":{"type":"string"},"example":101102103},{"name":"linkids","in":"query","description":"Comma-separated list of link (profile) IDs.","required":false,"schema":{"type":"string"},"example":53897205608542},{"name":"states","in":"query","description":"Comma-separated list of network states.","required":false,"schema":{"type":"string"},"example":"LIVE,LIVE-PENDING,PAUSED-USER,PAUSED-SYS,PAUSED-PENDING-USER,PAUSED-PENDING-SYS,INACTIVE,TEST-ACTIVATE,TEST-ACTIVATE-PENDING,DEAD,DEAD-PENDING"},{"name":"sims","in":"query","description":"Comma-separated list of profile ICCIDs.","required":false,"schema":{"type":"string"},"example":8.913130000123457e+39},{"name":"simrange","in":"query","description":"Range of profile ICCIDs separated by a hyphen.","required":false,"schema":{"type":"string"},"example":"89131300001234567890-89131300001234568000"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"description":"Total number of devices in the organization","type":"integer"}},"type":"object"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get device count"},"href":"/api/1/devices/count/get"}}},"/devices/activecount":{"get":{"tags":["Devices"],"summary":"Get past active device count","description":"Returns the count of devices that were active at a given point in time.","operationId":"getPastActiveDeviceCount","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"timestamp","in":"query","description":"Unix timestamp at which to evaluate the active device count","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"description":"Number of active devices at the requested point in time","type":"integer"}},"type":"object"}}}},"400":{"description":"Bad request — invalid timestamp"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get past active device count"},"href":"/api/1/devices/activecount/get"}}},"/devices/{deviceId}":{"get":{"tags":["Devices"],"summary":"Get device by ID","description":"Retrieves the details of an existing device. Specify the unique device identifier (device ID) in the request URL, which you can find on the Dashboard.","operationId":"getDevice","parameters":[{"name":"deviceId","in":"path","description":"ID of the device","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeviceResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get device by ID"},"href":"/api/1/devices/deviceId/get"}},"put":{"tags":["Devices"],"summary":"Rename or transfer a device","description":"Updates the specified device by setting the values of the parameters passed. Any parameters not provided will be left unchanged. You can change the device's name displayed on the Dashboard. You can also transfer ownership of the device to a different organization.","operationId":"updateDevice","parameters":[{"name":"deviceId","in":"path","description":"ID of the device","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"properties":{"name":{"description":"New device name","type":"string"},"orgid":{"description":"Transfer device to this organization","type":"integer"},"tunnelable":{"description":"Enable or disable SpaceBridge tunneling for the device","type":"boolean"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeviceResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Rename or transfer a device"},"href":"/api/1/devices/deviceId/put"}}},"/devices/state":{"post":{"tags":["Devices"],"summary":"Change device state (bulk)","description":"Change the state of multiple devices at once. Supported state values are `pause`, `live`, and `deactivate`. Pausing the device will prevent your device from passing any data on all SIM profiles. Paused devices still incur Monthly Recurring Charges. Deactivating permanently removes SIM cards from service and is supported from any non-deactivated state, including preflight/test mode states (TEST-ACTIVATE, TEST-HIBERNATE, TEST-AUTOACTIVATE, and their -PENDING variants).","operationId":"changeDeviceStateBulk","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["deviceids","state"],"properties":{"deviceids":{"description":"List of device IDs to update","type":"array","items":{"type":"integer"}},"state":{"description":"The new state for all SIM cards on the devices. Valid values are `pause`, `live`, or `deactivate`. Deactivation is supported from any non-deactivated state, including preflight/test mode states (TEST-ACTIVATE, TEST-HIBERNATE, TEST-AUTOACTIVATE, and their -PENDING variants).","type":"string","enum":["pause","live","deactivate"],"example":"pause"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Change device state (bulk)"},"href":"/api/1/devices/state/post"}}},"/devices/{deviceId}/state":{"post":{"tags":["Devices"],"summary":"Change device state","description":"Change the state of a device's SIM card. Supported state values are `pause`, `live`, and `deactivate`.\n\nPausing the device will prevent your device from passing any data on all SIM profiles. Paused devices still incur Monthly Recurring Charges.\n\nDeactivating permanently removes the SIM card from service. Deactivation is supported from any non-deactivated state, including preflight/test mode states (TEST-ACTIVATE, TEST-HIBERNATE, TEST-AUTOACTIVATE, and their -PENDING variants).","operationId":"changeDeviceStateSingle","parameters":[{"name":"deviceId","in":"path","description":"ID of the device","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["state"],"properties":{"state":{"description":"New state to set. Valid values are `pause`, `live`, or `deactivate`.","type":"string","enum":["pause","live","deactivate"],"example":"pause"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Change device state"},"href":"/api/1/devices/deviceId/state/post"}}},"/devices/transfer":{"post":{"tags":["Devices"],"summary":"Transfer devices to organization (bulk)","description":"Transfer devices to a different organization. Maximum of 3000 devices per request. All devices must belong to the same source organization.","operationId":"transferDevicesToOrganization","parameters":[{"name":"preview","in":"query","description":"If true, simulate the operation without making changes","required":false,"schema":{"type":"boolean"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["deviceids","orgid"],"properties":{"deviceids":{"description":"List of device IDs to transfer","type":"array","items":{"type":"integer"}},"orgid":{"description":"ID of the destination organization","type":"integer","example":4}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferDevicesResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Transfer devices to organization (bulk)"},"href":"/api/1/devices/transfer/post"}}},"/devices/usagelimit":{"post":{"tags":["Devices"],"summary":"Update data usage limits for devices (bulk)","description":"Updates the data usage limit, SMS limit, and data usage alert threshold for one or more SIMs. Values must be >= -1 where -1 means no limit.","operationId":"changeDeviceUsageLimitBulk","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["deviceids"],"properties":{"deviceids":{"description":"List of device IDs to update usage limits for","type":"array","items":{"type":"integer"}},"datathreshold":{"description":"Data usage alert threshold in bytes; triggers a notification when exceeded","type":"number","example":1000000},"overagelimit":{"description":"Hard data usage cap in bytes; device is paused when this limit is reached","type":"number","example":2000000},"smslimit":{"description":"Maximum number of SMS messages allowed per billing period","type":"number","example":100}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"properties":{"warnings":{"type":"array","items":{"type":"string"}},"devices_modified":{"description":"IDs of devices whose usage limit was updated","type":"array","items":{"type":"integer"}},"profiles_modified":{"description":"IDs of SIM profiles whose usage limit was updated","type":"array","items":{"type":"integer"}},"newdatathreshold":{"description":"Updated data alert threshold in bytes","type":"number"},"newoveragelimit":{"description":"Updated data usage limit in bytes","type":"number"},"newsmslimit":{"description":"Updated SMS limit","type":"number"}},"type":"object"}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Update data usage limits for devices (bulk)"},"href":"/api/1/devices/usagelimit/post"}}},"/devices/{deviceId}/usagelimit":{"post":{"tags":["Devices"],"summary":"Update data usage limit for device","description":"Updates the data usage limit, SMS limit, and data usage alert threshold for a SIM. Values must be >= -1 where -1 means no limit.","operationId":"changeDeviceUsageLimitSingle","parameters":[{"name":"deviceId","in":"path","description":"ID of the device","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"datathreshold":{"description":"Data usage alert threshold in bytes; triggers a notification when exceeded","type":"number","example":1000000},"overagelimit":{"description":"Hard data usage cap in bytes; device is paused when this limit is reached","type":"number","example":2000000},"smslimit":{"description":"Maximum number of SMS messages allowed per billing period","type":"number","example":100}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"properties":{"warnings":{"type":"array","items":{"type":"string"}},"devices_modified":{"description":"IDs of devices whose usage limit was updated","type":"array","items":{"type":"integer"}},"profiles_modified":{"description":"IDs of SIM profiles whose usage limit was updated","type":"array","items":{"type":"integer"}},"newdatathreshold":{"description":"Updated data alert threshold in bytes","type":"number"},"newoveragelimit":{"description":"Updated data usage limit in bytes","type":"number"},"newsmslimit":{"description":"Updated SMS limit","type":"number"}},"type":"object"}},"type":"object"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Update data usage limit for device"},"href":"/api/1/devices/deviceId/usagelimit/post"}}},"/devices/changeplan":{"post":{"tags":["Devices"],"summary":"Change data plan for devices (bulk)","description":"Change the data plan for the given devices. Non-pending paused profiles (PAUSED-USER, PAUSED-SYS) can change plans when the new plan uses the same CSP (no coverage change). Pending paused profiles remain rejected. Warning: Changing data plans will remove any set data limits.","operationId":"changeDevicePlanBulk","parameters":[{"name":"preview","in":"query","description":"If true, simulate the operation without making changes","required":false,"schema":{"type":"boolean"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["deviceids","planid","zone","orgid"],"properties":{"deviceids":{"description":"List of device IDs to change plans for","type":"array","items":{"type":"integer"}},"planid":{"description":"ID of the data plan to assign","type":"integer","example":4},"zone":{"description":"Geographic zone for the plan","type":"string","example":"global"},"orgid":{"description":"Organization ID of the devices to change plans for","type":"integer","example":45},"overage_limit":{"description":"Data overage limit in bytes. -1 for unlimited.","type":"integer"},"useacctbalance":{"description":"Apply account balance credit to this order","type":"boolean"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Change data plan for devices (bulk)"},"href":"/api/1/devices/changeplan/post"}}},"/devices/{deviceId}/changeplan":{"post":{"tags":["Devices"],"summary":"Change data plan for device","description":"Change the data plan for the given device. Non-pending paused profiles (PAUSED-USER, PAUSED-SYS) can change plans when the new plan uses the same CSP (no coverage change). Pending paused profiles remain rejected. Warning: Changing data plans will remove any set data limits.","operationId":"changeDevicePlanSingle","parameters":[{"name":"deviceId","in":"path","description":"ID of the device","required":true,"schema":{"type":"integer"}},{"name":"preview","in":"query","description":"If true, simulate the operation without making changes","required":false,"schema":{"type":"boolean"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["planid","zone","orgid"],"properties":{"planid":{"description":"ID of the data plan to assign","type":"integer","example":4},"zone":{"description":"Geographic zone for the plan","type":"string","example":"global"},"orgid":{"description":"Organization ID of the devices to change plans for","type":"integer","example":45},"overage_limit":{"description":"Data overage limit in bytes. -1 for unlimited.","type":"integer"},"useacctbalance":{"description":"Apply account balance credit to this order","type":"boolean"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Change data plan for device"},"href":"/api/1/devices/deviceId/changeplan/post"}}},"/devices/names":{"get":{"tags":["Devices"],"summary":"Get device names","description":"Retrieve a mapping of device IDs to device names for devices in the organization. Returns a paginated list with device IDs as keys and device names as values.","operationId":"getDeviceNames","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return (max 2000)","required":false,"schema":{"type":"integer","maximum":2000,"example":2000}},{"name":"startafter","in":"query","description":"Return results after the record with this ID (cursor-based pagination)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeviceNamesResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get device names"},"href":"/api/1/devices/names/get"}},"post":{"tags":["Devices"],"summary":"Update device names (bulk)","description":"Bulk update device name prefixes. Each device is renamed to `{prefix} ({last 5 ICCID digits})` unless `skipPostfix` is true. Devices are selected via `deviceids`, bulk-selection filters, or a combination of both. Requires the `bulk_rename` feature flag on the organization.","operationId":"updateDeviceNames","parameters":[{"name":"preview","in":"query","description":"When true, return a sample of devices that would be renamed without making changes","required":false,"schema":{"type":"boolean"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["prefix"],"properties":{"prefix":{"description":"String prepended to every renamed device. The last 5 digits of the active ICCID are appended in parentheses unless skipPostfix is true.","type":"string"},"skipPostfix":{"description":"When true, set each device name to the prefix exactly, with no ICCID suffix appended.","type":"boolean"},"deviceids":{"description":"Explicit list of device IDs to rename.","type":"array","items":{"type":"integer"}},"allSelected":{"description":"When true, select all devices in the organization (subject to excludedDeviceIds).","type":"boolean"},"useSearch":{"description":"When true, resolve the device selection from the search index using deviceFilters instead of the database.","type":"boolean"},"deviceFilters":{"description":"Filter criteria used to select devices when allSelected is true or useSearch is true.","properties":{"limit":{"description":"Maximum number of devices per page.","type":"integer"},"pageIdsSelected":{"description":"Cursor IDs (startafter values) that identify which pages of the device list to include.","type":"array","items":{"type":"integer"}},"pagesSelected":{"description":"Page numbers selected.","type":"array","items":{"type":"integer"}},"states":{"description":"Filter devices by state (e.g. LIVE, PAUSED-USER).","type":"array","items":{"type":"string"}},"hitsPerPage":{"description":"Number of results per page used to compute page boundaries.","type":"integer"},"orgid":{"description":"Organization ID.","type":"integer"},"query":{"description":"Search query string (used when useSearch is true).","type":"string"},"sort":{"description":"Sort field and direction (used when useSearch is true). Example: {\"links_cur_billing_data_used\": \"ASC\"}","type":"object"},"filters":{"description":"Additional search filter criteria (used when useSearch is true).","type":"object"}},"type":"object"},"excludedDeviceIds":{"description":"Device IDs to exclude from the bulk selection.","type":"array","items":{"type":"integer"}},"linkids":{"description":"Cellular link IDs to include in the selection.","type":"array","items":{"type":"integer"}},"pagesSelected":{"description":"Top-level page numbers selected; presence triggers bulk device selection.","type":"array","items":{"type":"integer"}}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"403":{"description":"Organization does not have the bulk_rename feature flag enabled"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Update device names (bulk)"},"href":"/api/1/devices/names/post"}}},"/devices/locations":{"get":{"tags":["Devices"],"summary":"Get device locations","description":"Retrieve location information for devices that have reported location data. Returns a paginated list of devices with their most recent location including latitude, longitude, and accuracy range.","operationId":"getDeviceLocations","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Maximum number of results to return (max 5000)","required":false,"schema":{"type":"integer","maximum":5000,"example":50}},{"name":"startafter","in":"query","description":"Return results after the record with this ID (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"ids","in":"query","description":"Comma-separated list of device IDs to filter by","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeviceLocationsResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get device locations"},"href":"/api/1/devices/locations/get"}}},"/devices/tags":{"get":{"tags":["Devices"],"summary":"List all tags","description":"Get all tags. If you specify an org, this will only return the tags for the org.","operationId":"getDeviceTags","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"deviceids","in":"query","description":"Comma-separated list of device IDs to filter by","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeviceTagsResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Tags","x-mint":{"metadata":{"sidebarTitle":"List all tags"},"href":"/api/1/devices/tags/get"}},"post":{"tags":["Devices"],"summary":"Create a tag","description":"Creates a new device tag in the caller's current organization. Devices can optionally be linked to the tag at creation time.","operationId":"addDeviceTag","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["name"],"properties":{"name":{"description":"Name for the new tag","type":"string"},"deviceids":{"description":"Device IDs to link to the new tag","type":"array","items":{"type":"integer"}}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeviceTagsResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Tags","x-mint":{"metadata":{"sidebarTitle":"Create a tag"},"href":"/api/1/devices/tags/post"}}},"/devices/tags/{tagId}/updatetagname":{"put":{"tags":["Devices"],"summary":"Rename a tag","description":"Update a tag name for the given tag","operationId":"updateDeviceTagName","parameters":[{"name":"tagId","in":"path","description":"ID of the device tag","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["name"],"properties":{"name":{"description":"New name for the tag","type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeviceTagsResponse"}}}},"400":{"description":"Tag name cannot be empty or exceeds 32 characters"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Tags","x-mint":{"metadata":{"sidebarTitle":"Rename a tag"},"href":"/api/1/devices/tags/tagId/updatetagname/put"}}},"/devices/tags/{tagId}/link":{"post":{"tags":["Devices"],"summary":"Add tag to devices","description":"Add a tag to specified devices.","operationId":"linkDeviceTag","parameters":[{"name":"tagId","in":"path","description":"ID of the device tag","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deviceids":{"description":"Device IDs to add the tag to. Optional — omitting or passing an empty array is a no-op.","type":"array","items":{"type":"integer"}}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeviceTagsResponse"}}}},"400":{"description":"Tag ID is not valid for organization"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Tags","x-mint":{"metadata":{"sidebarTitle":"Add tag to devices"},"href":"/api/1/devices/tags/tagId/link/post"}}},"/devices/tags/{tagId}/unlink":{"post":{"tags":["Devices"],"summary":"Remove tag from devices","description":"Removes a tag from specified devices. Returns the tag with its remaining linked devices.","operationId":"unlinkDeviceTag","parameters":[{"name":"tagId","in":"path","description":"ID of the device tag","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deviceids":{"description":"Device IDs to remove the tag from. Optional — omitting or passing an empty array is a no-op.","type":"array","items":{"type":"integer"}}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDeviceTagsResponse"}}}},"400":{"description":"Tag ID is not valid for organization"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Tags","x-mint":{"metadata":{"sidebarTitle":"Remove tag from devices"},"href":"/api/1/devices/tags/tagId/unlink/post"}}},"/devices/tags/{tagId}":{"delete":{"tags":["Devices"],"summary":"Delete tag","description":"Deletes a tag. If the tag is associated with any SIMs, the tag is removed from those SIMs.","operationId":"deleteDeviceTag","parameters":[{"name":"tagId","in":"path","description":"ID of the device tag","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Tags","x-mint":{"metadata":{"sidebarTitle":"Delete tag"},"href":"/api/1/devices/tags/tagId/delete"}}},"/devices/search":{"post":{"tags":["Devices"],"summary":"Search for devices","operationId":"postSearchDevices","requestBody":{"required":false,"content":{"application/json":{"schema":{"properties":{"orgid":{"description":"Filter results to this organization ID","type":"integer"},"limit":{"description":"Maximum number of results to return (max 10000)","type":"integer","maximum":10000,"example":5000}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListDevicesResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Search for devices"},"href":"/api/1/devices/search/post"}}},"/devices/messages":{"post":{"tags":["Devices"],"summary":"Send cloud message to device","description":"Send a cloud message (data) to one or more devices. Messages can be sent as plain text using the `data` parameter or as base64-encoded content using the `base64data` parameter. Port must be between 1 and 65535. Protocol must be TCP or UDP. Max data size is 10K.","operationId":"postDeviceMessage","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["deviceids","port","protocol"],"properties":{"deviceids":{"description":"List of device IDs to send the message to","type":"array","items":{"type":"integer"}},"port":{"description":"Destination port number (1–65535)","type":"integer","maximum":65535,"minimum":1},"protocol":{"description":"Transport protocol for the message","type":"string","enum":["TCP","UDP"],"example":"TCP"},"data":{"description":"Data to send (plain text). Max 10K","type":"string"},"base64data":{"description":"Data to send encoded in base64. Max 10K","type":"string"},"encrypted":{"description":"When true (default), encrypt the message payload","type":"boolean","default":true}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostDeviceMessageResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Cloud messaging","x-mint":{"metadata":{"sidebarTitle":"Send cloud message to device"},"href":"/api/1/devices/messages/post"}}},"/devices/batch/usagelimit":{"post":{"tags":["Devices"],"summary":"Batch update device usage limits","description":"Create a batch job to update the usage limits for a large set of devices. Returns a list of tasks for the batch runner.","operationId":"createDeviceUsageLimitTasks","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["deviceids"],"properties":{"deviceids":{"description":"List of device IDs to update","type":"array","items":{"type":"integer"}},"datathreshold":{"description":"Data usage alert threshold in bytes (-1 for no limit)","type":"number"},"overagelimit":{"description":"Data overage limit in bytes (-1 for no limit)","type":"number"},"smslimit":{"description":"SMS limit (-1 for no limit)","type":"number"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchJobResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Bulk actions","x-mint":{"metadata":{"sidebarTitle":"Batch update device usage limits"},"href":"/api/1/devices/batch/usagelimit/post"}}},"/devices/opensessions":{"get":{"tags":["Devices"],"summary":"List devices with open data sessions","description":"Returns a list of device IDs that currently have an open cellular data session.","operationId":"getDevicesWithOpenSessions","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDevicesWithOpenSessionsResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"List devices with open data sessions"},"href":"/api/1/devices/opensessions/get"}}},"/devices/{deviceId}/webhook":{"get":{"tags":["Devices"],"summary":"Get device webhook","description":"Returns the webhook configuration for the specified device.","operationId":"getDeviceWebhook","parameters":[{"name":"deviceId","in":"path","description":"ID of the device","required":true,"schema":{"type":"integer"}},{"name":"guid","in":"query","description":"Filter results to the webhook with this GUID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDeviceWebhookResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get device webhook"},"href":"/api/1/devices/deviceId/webhook/get"}}},"/organizations":{"get":{"tags":["Organizations"],"summary":"List organizations","description":"List organizations. Returns all organizations that you are a member of. This includes the personal organization tied to your user. When you create your Hologram account, a personal organization associated solely with your account is also created. This personal org is named after you. You cannot add other users to this personal organization.","operationId":"listOrganizations","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return (max 1000)","required":false,"schema":{"type":"integer","maximum":1000,"example":25}},{"name":"id","in":"query","description":"Filter by a specific organization ID","required":false,"schema":{"type":"integer"}},{"name":"ids","in":"query","description":"Comma-separated list of organization IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"startafter","in":"query","description":"Return results after the record with this ID (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"q","in":"query","description":"Filter results to organizations whose name contains this string","required":false,"schema":{"type":"string"}},{"name":"personal_for","in":"query","description":"Return only the personal organization owned by this user ID","required":false,"schema":{"type":"integer"}},{"name":"shared_orgs_only","in":"query","description":"When true, exclude personal organizations and return only shared organizations","required":false,"schema":{"type":"integer"}},{"name":"userids","in":"query","description":"Comma-separated list of user IDs; return only organizations that contain at least one of these users","required":false,"schema":{"type":"string"}},{"name":"with_verified_status","in":"query","description":"When true, include the email verification status of each member user","required":false,"schema":{"type":"integer"}},{"name":"withbilling_scheme","in":"query","description":"When true, include the billing scheme in results","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOrganizationsResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"List organizations"},"href":"/api/1/organizations/get"}},"post":{"tags":["Organizations"],"summary":"Create organization","description":"Create a new organization","operationId":"createOrganization","requestBody":{"content":{"application/json":{"schema":{"properties":{"name":{"description":"Name of the new organization","type":"string","example":"New Org"},"ccemails":{"description":"Comma-separated list of email addresses to CC on billing communications","type":"string"},"invoice_text":{"description":"Custom text to include on invoices","type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Create organization"},"href":"/api/1/organizations/post"}}},"/organizations/{orgId}":{"get":{"tags":["Organizations"],"summary":"Get an organization","description":"Get organization details","operationId":"getOrganization","parameters":[{"name":"orgId","in":"path","description":"ID of the organization","required":true,"schema":{"type":"integer"}},{"name":"with_verified_status","in":"query","description":"When true, include the email verification status of each member user","required":false,"schema":{"type":"integer"}},{"name":"withbilling_scheme","in":"query","description":"When true, include the billing scheme in the response","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get an organization"},"href":"/api/1/organizations/orgId/get"}}},"/organizations/{orgId}/billing":{"get":{"tags":["Organizations"],"summary":"Get organization billing configuration","description":"Get billing info for the organization","operationId":"getOrganizationBilling","parameters":[{"name":"orgId","in":"path","description":"ID of the organization","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBillingResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Billing","x-mint":{"metadata":{"sidebarTitle":"Get organization billing configuration"},"href":"/api/1/organizations/orgId/billing/get"}}},"/organizations/pending":{"get":{"tags":["Organizations"],"summary":"List pending invites","description":"Get all the pending invites for an organization","operationId":"listPendingInvites","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPendingInvitesResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"List pending invites"},"href":"/api/1/organizations/pending/get"}}},"/plans":{"get":{"tags":["Organizations"],"summary":"List data plans","description":"List all data plans.\nReturns all data plans matching the specified parameters.","operationId":"getPlans","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"id","in":"query","description":"Filter by a specific plan ID","required":false,"schema":{"type":"integer"}},{"name":"ids","in":"query","description":"Comma-separated list of plan IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Filter results to plans whose name contains this string","required":false,"schema":{"type":"string"}},{"name":"carrierid","in":"query","description":"Filter results to plans available on this carrier ID","required":false,"schema":{"type":"integer"}},{"name":"display_category","in":"query","description":"Filter results to plans in this display category","required":false,"schema":{"type":"string"}},{"name":"startafter","in":"query","description":"Return results after the record with this ID (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"include_rate_card_range","in":"query","description":"When true, each plan response will include variable_rates_range metadata sourced from the rate card API","required":false,"schema":{"type":"boolean"}},{"name":"rate_card_effective_date","in":"query","description":"Override the effective date used when fetching plan rate card data","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Maximum number of results to return (max 1000)","required":false,"schema":{"type":"integer","maximum":1000,"example":25}},{"name":"cellular_coverage_region_id","in":"query","description":"Filter results to plans assigned to this cellular coverage region ID","required":false,"schema":{"type":"integer"}},{"name":"network","in":"query","description":"Filter results to plans available on this carrier ID (alias for carrierid)","required":false,"schema":{"type":"integer"}},{"name":"includezdr","in":"query","description":"When true, include zero data rate fields (zero_data_rate_flag, zero_data_rate) in each pricing tier","required":false,"schema":{"type":"boolean"}},{"name":"includepid","in":"query","description":"When true, include the pricing entry ID (tier_pricing_id) in each pricing tier","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPlansResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data plans","x-mint":{"metadata":{"sidebarTitle":"List data plans"},"href":"/api/1/plans/get"}}},"/plans/{planId}":{"get":{"tags":["Organizations"],"summary":"Get data plan","description":"Retrieves the details of a specific data plan.","operationId":"getPlan","parameters":[{"name":"planId","in":"path","description":"ID of the plan","required":true,"schema":{"type":"integer"}},{"name":"include_rate_card_range","in":"query","description":"When true, each plan response will include variable_rates_range metadata sourced from the rate card API","required":false,"schema":{"type":"boolean"}},{"name":"rate_card_effective_date","in":"query","description":"Override the effective date used when fetching plan rate card data","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPlanResponse"}}}},"400":{"description":"Invalid plan or unable to access"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data plans","x-mint":{"metadata":{"sidebarTitle":"Get data plan"},"href":"/api/1/plans/planId/get"}}},"/organizations/{orgId}/devices/plans":{"get":{"tags":["Organizations"],"summary":"Get data plan inventory for organization","description":"Returns a summary of device data plan distribution for an organization.","operationId":"getOrganizationDevicePlans","parameters":[{"name":"orgId","in":"path","description":"ID of the organization","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOrganizationDevicePlansResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data plans","x-mint":{"metadata":{"sidebarTitle":"Get data plan inventory for organization"},"href":"/api/1/organizations/orgId/devices/plans/get"}}},"/plans/pricing":{"get":{"tags":["Organizations"],"summary":"Get all data plan pricing","description":"Get pricing for a plan.\nRetrieves the pricing details of available plans.","operationId":"getPlanPricing","parameters":[{"name":"orgid","in":"query","description":"Filter results to this organization ID","required":false,"schema":{"type":"integer"}},{"name":"planid","in":"query","description":"Filter pricing to a specific plan ID","required":false,"schema":{"type":"integer"}},{"name":"planids","in":"query","description":"Comma-separated list of plan IDs to filter pricing by","required":false,"schema":{"type":"string"}},{"name":"haszdr","in":"query","description":"When true, return only pricing entries that have a zero data rate configured (zero_data_rate_flag = 1)","required":false,"schema":{"type":"boolean"}},{"name":"zone","in":"query","description":"Filter pricing to a specific availability zone (e.g. global)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPlanPricingResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data plans","x-mint":{"metadata":{"sidebarTitle":"Get all data plan pricing"},"href":"/api/1/plans/pricing/get"}}},"/reports/devices":{"get":{"tags":["Devices"],"summary":"Get a devices report for the current organization","operationId":"getDevicesReport","parameters":[{"name":"timestart","in":"query","description":"Start of time range (Unix timestamp)","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"End of time range (Unix timestamp)","required":false,"schema":{"type":"integer"}},{"name":"tagids","in":"query","description":"Comma-separated tag IDs to filter by","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicesReportResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get a devices report for the current organization"},"href":"/api/1/reports/devices/get"}}},"/sms/outgoing/":{"post":{"tags":["Devices"],"summary":"Send an outbound SMS from a device","operationId":"sendOutboundSMS","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["body","destinationphonenumber"],"properties":{"body":{"description":"SMS message body","type":"string"},"destinationphonenumber":{"description":"Destination phone number","type":"string"},"deviceid":{"description":"Device ID of the sending device; required if phonenumber is not provided","type":"integer"},"phonenumber":{"description":"Phone number of the sending device; required if deviceid is not provided","type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleSuccessResponse"}}}},"400":{"description":"Missing deviceid or phonenumber, device not found, or device has no phone number assigned"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"SMS","x-mint":{"metadata":{"sidebarTitle":"Send an outbound SMS from a device"},"href":"/api/1/sms/outgoing/post"}}},"/sms/incoming/":{"post":{"tags":["Devices"],"summary":"Route an inbound SMS to the destination device","description":"Authenticated endpoint for delivering inbound SMS to a device.","operationId":"receiveInboundSMS","requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"fromnumber":{"description":"Source phone number","type":"string"},"body":{"description":"SMS message body (plain text)","type":"string"},"base64body":{"description":"Base64-encoded message body; takes precedence over body if provided","type":"string"},"deviceid":{"description":"Target device ID","type":"integer"},"deviceids":{"description":"Target device IDs","type":"array","items":{"type":"integer"}},"phonenumber":{"description":"Target device phone number; used to look up device when deviceid/deviceids are absent","type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SMSInboundResponse"}}}},"400":{"description":"Bad request"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"SMS","x-mint":{"metadata":{"sidebarTitle":"Route an inbound SMS to the destination device"},"href":"/api/1/sms/incoming/post"}}},"/simcards/configurations/":{"get":{"tags":["SIM Configuration"],"summary":"List SIM configurations","description":"Returns available sim configurations based on the plans visible to all of a user's orgs. Optionally filter specific configurations with the parameters below.","operationId":"listSimConfigurations","parameters":[{"name":"ids","in":"query","description":"Comma-separated configuration IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"carrier_ids","in":"query","description":"Comma-separated carrier IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"disabled_carrier_ids","in":"query","description":"Comma-separated disabled carrier IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"enabled_carrier_id","in":"query","description":"Filter by enabled carrier ID","required":false,"schema":{"type":"integer"}},{"name":"fallback_carrier_id","in":"query","description":"Filter by fallback carrier ID","required":false,"schema":{"type":"integer"}},{"name":"name","in":"query","description":"Filter by configuration name (case-insensitive substring match)","required":false,"schema":{"type":"string"}},{"name":"plan_ids","in":"query","description":"Comma-separated plan IDs; when provided, applicable_plan_ids is included in each result","required":false,"schema":{"type":"string"}},{"name":"orgid","in":"query","description":"Organization ID; when provided, applicable_plan_ids is included in each result","required":false,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Maximum number of results (max 5000, default 50)","required":false,"schema":{"type":"integer"}},{"name":"startafter","in":"query","description":"Return results after this configuration ID","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimConfigurationListResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Conductor","x-mint":{"metadata":{"sidebarTitle":"List SIM configurations"},"href":"/api/1/simcards/configurations/get"}}},"/simcards/configurations/{simConfigurationId}/":{"get":{"tags":["SIM Configuration"],"summary":"Get a single SIM configuration","description":"Get a single SIM configuration via its id. Optionally provide an orgid or plan_ids to validate a configuration is applicable.","operationId":"getSimConfiguration","parameters":[{"name":"simConfigurationId","in":"path","description":"SIM configuration ID","required":true,"schema":{"type":"integer"}},{"name":"plan_ids","in":"query","description":"Comma-separated plan IDs; when provided, applicable_plan_ids is included in the result","required":false,"schema":{"type":"string"}},{"name":"orgid","in":"query","description":"Organization ID; when provided, applicable_plan_ids is included in the result","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimConfigurationResponse"}}}},"400":{"description":"Configuration not found or not accessible"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Conductor","x-mint":{"metadata":{"sidebarTitle":"Get a single SIM configuration"},"href":"/api/1/simcards/configurations/simConfigurationId/get"}}},"/simcards/configure":{"post":{"tags":["SIM Configuration"],"summary":"Apply a SIM configuration to one or more SIM cards","description":"Dispatches a configuration change to the specified SIM cards. Non-admin users may only target SIM cards they can access and configurations allowed by their plan.","operationId":"configureSimCards","requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["configuration_id","simcard_ids"],"properties":{"configuration_id":{"description":"ID of the SIM configuration to apply","type":"integer"},"simcard_ids":{"description":"SIM card IDs to configure (max 250)","type":"array","items":{"type":"integer"}},"immediate":{"description":"Skip the configuration queue; by default operations are queued at the time of the next usage update. If set and our backend is too busy to process the request in realtime this endpoint will return a 429 rate limit error until there is space for the request.  Non-internal users can only have 1 sim card id per request.","type":"boolean","default":false},"plan_id":{"description":"Change the device plan simultaneously; requires zone and orgid","type":"integer"},"zone":{"description":"Required when plan_id is provided","type":"string","default":"global"},"orgid":{"description":"Required when plan_id is provided","type":"integer"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSimCardsResponse"}}}},"400":{"description":"Invalid configuration, inaccessible SIM cards, incompatible plan, or no valid devices after validation"},"429":{"description":"Immediate configuration temporarily unavailable due to eUICC queue backlog"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Conductor","x-mint":{"metadata":{"sidebarTitle":"Apply a SIM configuration to one or more SIM cards"},"href":"/api/1/simcards/configure/post"}}},"/simcards/{simCardId}/configure/":{"post":{"tags":["SIM Configuration"],"summary":"Apply a SIM configuration to a single SIM card","description":"Dispatches a configuration change to the specified SIM card. Non-admin users may only target a SIM card they can access and configurations allowed by their plan.","operationId":"configureSingleSimCard","parameters":[{"name":"simCardId","in":"path","description":"SIM card ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"required":["configuration_id"],"properties":{"configuration_id":{"description":"ID of the SIM configuration to apply","type":"integer"},"immediate":{"description":"Skip the configuration queue; by default operations are queued at the time of the next usage update. If set and our backend is too busy to process the request in realtime this endpoint will return a 429 rate limit error until there is space for the request.","type":"boolean","default":false},"plan_id":{"description":"Change the device plan simultaneously; requires zone and orgid","type":"integer"},"zone":{"description":"Required when plan_id is provided","type":"string","default":"global"},"orgid":{"description":"Required when plan_id is provided","type":"integer"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigureSimCardsResponse"}}}},"400":{"description":"Invalid configuration, inaccessible SIM card, incompatible plan, or no valid devices after validation"},"429":{"description":"Immediate configuration temporarily unavailable due to eUICC queue backlog"},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Conductor","x-mint":{"metadata":{"sidebarTitle":"Apply a SIM configuration to a single SIM card"},"href":"/api/1/simcards/simCardId/configure/post"}}},"/tunnelkeys/":{"get":{"tags":["Devices"],"summary":"List tunnel keys for the current user","description":"Returns the authenticated user's tunnel keys. Requires the organization to have tunnel access enabled.","operationId":"listTunnelKeys","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return","required":false,"schema":{"type":"integer"}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"startafter","in":"query","description":"Return results with ID less than this value","required":false,"schema":{"type":"integer"}},{"name":"withdisabled","in":"query","description":"Include disabled tunnel keys (0 or 1; defaults to 0)","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TunnelKeyListResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Organization does not have tunnel access"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Secure device tunneling","x-mint":{"metadata":{"sidebarTitle":"List tunnel keys for the current user"},"href":"/api/1/tunnelkeys/get"}},"post":{"tags":["Devices"],"summary":"Create a tunnel key","description":"Creates a new tunnel key. If `public_key` is omitted, the server generates a 2048-bit RSA keypair and returns the private key in the response — save it immediately, it is not stored. The key type must be `ssh-rsa`. At most 5 enabled keys are allowed per user. If the org does not have a plan that supports device tunneling, this endpoint returns 403.","operationId":"createTunnelKey","requestBody":{"required":false,"content":{"application/json":{"schema":{"properties":{"public_key":{"description":"OpenSSH-format RSA public key; if omitted the server generates a keypair","type":"string"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TunnelKeyResponse"}}}},"400":{"description":"Invalid public key format or tunnel key limit reached"},"401":{"description":"Unauthorized"},"403":{"description":"Organization does not have tunnel access"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Secure device tunneling","x-mint":{"metadata":{"sidebarTitle":"Create a tunnel key"},"href":"/api/1/tunnelkeys/post"}}},"/tunnelkeys/{keyId}/disable/":{"post":{"tags":["Devices"],"summary":"Disable a tunnel key","operationId":"disableTunnelKey","parameters":[{"name":"keyId","in":"path","description":"Tunnel key ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TunnelKeyIdResponse"}}}},"400":{"description":"Invalid key ID"},"401":{"description":"Unauthorized"},"403":{"description":"Organization does not have tunnel access"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Secure device tunneling","x-mint":{"metadata":{"sidebarTitle":"Disable a tunnel key"},"href":"/api/1/tunnelkeys/keyId/disable/post"}}},"/tunnelkeys/{keyId}/enable/":{"post":{"tags":["Devices"],"summary":"Enable a tunnel key","operationId":"enableTunnelKey","parameters":[{"name":"keyId","in":"path","description":"Tunnel key ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TunnelKeyIdResponse"}}}},"400":{"description":"Invalid key ID or tunnel key limit reached"},"401":{"description":"Unauthorized"},"403":{"description":"Organization does not have tunnel access"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Secure device tunneling","x-mint":{"metadata":{"sidebarTitle":"Enable a tunnel key"},"href":"/api/1/tunnelkeys/keyId/enable/post"}}},"/usage/data/":{"get":{"tags":["Devices"],"summary":"List recent data usage records","operationId":"getRecentUsage","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return (max 5000)","required":false,"schema":{"type":"integer","default":100,"maximum":5000}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"linkid","in":"query","description":"Filter by a specific cellular link (SIM profile) ID","required":false,"schema":{"type":"integer"}},{"name":"linkids","in":"query","description":"Comma-separated list of link (SIM profile) IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"tagids","in":"query","description":"Comma-separated list of device tag IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"timestart","in":"query","description":"Unix timestamp; return records from this time onward","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Unix timestamp; return records up to this time","required":false,"schema":{"type":"integer"}},{"name":"islive","in":"query","description":"When true, include only live (non-paused) devices","required":false,"schema":{"type":"boolean"}},{"name":"getdeviceinfo","in":"query","description":"When true, include device metadata in each record","required":false,"schema":{"type":"boolean"}},{"name":"getplaninfo","in":"query","description":"When true, include data plan metadata in each record","required":false,"schema":{"type":"boolean"}},{"name":"getprofileinfo","in":"query","description":"When true, include SIM profile metadata in each record","required":false,"schema":{"type":"boolean"}},{"name":"getcountryinfo","in":"query","description":"When true, include country metadata in each record","required":false,"schema":{"type":"boolean"}},{"name":"getlocationinfo","in":"query","description":"When true, include location metadata in each record","required":false,"schema":{"type":"boolean"}},{"name":"startafter","in":"query","description":"Return results with record ID less than this value","required":false,"schema":{"type":"integer"}},{"name":"higherthanid","in":"query","description":"Return results with record ID greater than this value","required":false,"schema":{"type":"integer"}},{"name":"simcardids","in":"query","description":"Comma-separated list of SIM card IDs","required":false,"schema":{"type":"string"}},{"name":"tagid","in":"query","description":"Filter by device tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagname","in":"query","description":"Filter by device tag name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageDataListResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"List recent data usage records"},"href":"/api/1/usage/data/get"}}},"/usage/data/daily":{"get":{"tags":["Devices"],"summary":"List daily aggregated data usage","operationId":"getDailyUsage","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return (max 5000)","required":false,"schema":{"type":"integer","default":100,"maximum":5000}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"linkid","in":"query","description":"Filter by a specific cellular link (SIM profile) ID","required":false,"schema":{"type":"integer"}},{"name":"linkids","in":"query","description":"Comma-separated list of link (SIM profile) IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"tagids","in":"query","description":"Comma-separated list of device tag IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"timestart","in":"query","description":"Unix timestamp; return records from this time onward","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Unix timestamp; return records up to this time","required":false,"schema":{"type":"integer"}},{"name":"islive","in":"query","description":"When true, include only live (non-paused) devices","required":false,"schema":{"type":"boolean"}},{"name":"aggregateall","in":"query","description":"When true, aggregate usage across all matching records into a single row","required":false,"schema":{"type":"boolean"}},{"name":"startat","in":"query","description":"Return results with record ID less than this value","required":false,"schema":{"type":"string"}},{"name":"tagid","in":"query","description":"Filter by device tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagname","in":"query","description":"Filter by device tag name","required":false,"schema":{"type":"string"}},{"name":"dataplansubscriptionid","in":"query","description":"Filter by data plan subscription ID","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageDailyListResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"List daily aggregated data usage"},"href":"/api/1/usage/data/daily/get"}}},"/usage/data/monthly":{"get":{"tags":["Devices"],"summary":"List monthly aggregated data usage","operationId":"getMonthlyUsage","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return (max 5000)","required":false,"schema":{"type":"integer","default":100,"maximum":5000}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"linkid","in":"query","description":"Filter by a specific cellular link (SIM profile) ID","required":false,"schema":{"type":"integer"}},{"name":"linkids","in":"query","description":"Comma-separated list of link (SIM profile) IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"tagids","in":"query","description":"Comma-separated list of device tag IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"timestart","in":"query","description":"Unix timestamp; return records from this time onward","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Unix timestamp; return records up to this time","required":false,"schema":{"type":"integer"}},{"name":"islive","in":"query","description":"When true, include only live (non-paused) devices","required":false,"schema":{"type":"boolean"}},{"name":"aggregateall","in":"query","description":"When true, aggregate usage across all matching records into a single row","required":false,"schema":{"type":"boolean"}},{"name":"startat","in":"query","description":"Return results with record ID less than this value","required":false,"schema":{"type":"string"}},{"name":"tagid","in":"query","description":"Filter by device tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagname","in":"query","description":"Filter by device tag name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageMonthlyListResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"List monthly aggregated data usage"},"href":"/api/1/usage/data/monthly/get"}}},"/usage/data/last-period-with-usage":{"get":{"tags":["Devices"],"summary":"Get the last billing period that had usage activity","operationId":"getLastPeriodWithUsage","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageLastPeriodResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"Get the last billing period that had usage activity"},"href":"/api/1/usage/data/last-period-with-usage/get"}}},"/usage/data/billing":{"get":{"tags":["Devices"],"summary":"List billing usage records","description":"Returns total data usage for each SIM summarized by the SIM's unique 30-day billing period. Records are returned per link (profile) ID by billing period, within the date range specified. Monthly Recurring Charges are billed every 30 days beginning at the time the device was activated. Data is available for the last three months.","operationId":"getBillingUsage","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return (max 5000)","required":false,"schema":{"type":"integer","default":100,"maximum":5000}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"linkid","in":"query","description":"Filter by a specific cellular link (SIM profile) ID","required":false,"schema":{"type":"integer"}},{"name":"linkids","in":"query","description":"Comma-separated list of link (SIM profile) IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"deviceids","in":"query","description":"Comma-separated list of device IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"tagids","in":"query","description":"Comma-separated list of device tag IDs to filter by","required":false,"schema":{"type":"string"}},{"name":"timestart","in":"query","description":"Unix timestamp; return records from this time onward","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Unix timestamp; return records up to this time","required":false,"schema":{"type":"integer"}},{"name":"islive","in":"query","description":"When true, include only live (non-paused) devices","required":false,"schema":{"type":"boolean"}},{"name":"startat","in":"query","description":"Return results with record ID less than this value","required":false,"schema":{"type":"string"}},{"name":"maxperiodsback","in":"query","description":"Maximum number of billing periods to look back","required":false,"schema":{"type":"integer"}},{"name":"tagid","in":"query","description":"Filter by device tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagname","in":"query","description":"Filter by device tag name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageBillingListResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden — billing_visible permission required"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"List billing usage records"},"href":"/api/1/usage/data/billing/get"}}},"/usage/data/total":{"get":{"tags":["Devices"],"summary":"Get aggregated total data usage","operationId":"getTotalUsage","parameters":[{"name":"timestart","in":"query","description":"Unix timestamp; return records from this time onward","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Unix timestamp; return records up to this time","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageTotalResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"Get aggregated total data usage"},"href":"/api/1/usage/data/total/get"}}},"/usage/sms/":{"get":{"tags":["Devices"],"summary":"List SMS usage records","operationId":"getSMSUsage","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return","required":false,"schema":{"type":"integer"}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"timestart","in":"query","description":"Unix timestamp; return records from this time onward","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Unix timestamp; return records up to this time","required":false,"schema":{"type":"integer"}},{"name":"aggregate","in":"query","description":"When true, returns aggregated counts rather than individual records","required":false,"schema":{"type":"boolean"}},{"name":"startafter","in":"query","description":"Return results with record ID less than this value (non-aggregate mode only)","required":false,"schema":{"type":"integer"}},{"name":"maxperiodsback","in":"query","description":"Maximum billing periods to look back (billing aggregate mode only)","required":false,"schema":{"type":"integer"}},{"name":"tagid","in":"query","description":"Filter by device tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagname","in":"query","description":"Filter by device tag name","required":false,"schema":{"type":"string"}},{"name":"usagetype","in":"query","description":"Result grouping: \"persim\" (default) or \"perprofile\"","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SMSUsageListResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"List SMS usage records"},"href":"/api/1/usage/sms/get"}}},"/usage/billing/simcard/{simcardid}":{"get":{"tags":["Usage","SIMCards"],"summary":"Get current billing period usage for a SIM card","description":"Returns one aggregate usage record for a SIM's current unique 30-day billing period. Optionally restrict the total to one cellular link; linkids identifies all links included in the aggregate.","operationId":"getSIMsCurrentBillingPeriodUsage","parameters":[{"name":"simcardid","in":"path","description":"SIM card ID to get current billing period usage for","required":true,"schema":{"type":"integer"}},{"name":"linkid","in":"query","description":"Filter by a specific cellular link (SIM profile) ID","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageSIMCurrentBillingPeriodResponse"}}}},"400":{"description":"Invalid simcardid or linkid"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden — billing_visible permission required"},"404":{"description":"SIM card not found"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Data usage","x-mint":{"metadata":{"sidebarTitle":"Get current billing period usage for a SIM card"},"href":"/api/1/usage/billing/simcard/simcardid/get"}}},"/users/":{"get":{"tags":["Organizations"],"summary":"List users","operationId":"listUsers","parameters":[{"name":"limit","in":"query","description":"Maximum number of results to return","required":false,"schema":{"type":"integer"}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"userid","in":"query","description":"Filter to return a specific user by ID","required":false,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserListResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"apiKeyAuth":[]},{"bearerAuth":[]}],"x-nav-group":"Users","x-mint":{"metadata":{"sidebarTitle":"List users"},"href":"/api/1/users/get"}}},"/users/{userId}/":{"get":{"tags":["Organizations"],"summary":"Get a user by ID","operationId":"getUser","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Users","x-mint":{"metadata":{"sidebarTitle":"Get a user by ID"},"href":"/api/1/users/userId/get"}},"post":{"tags":["Organizations"],"summary":"Update a user","operationId":"updateUser","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"first":{"description":"User's first name","type":"string"},"last":{"description":"User's last name","type":"string"},"email":{"description":"User's email address","type":"string","format":"email"}},"type":"object"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"400":{"description":"Validation error"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Users","x-mint":{"metadata":{"sidebarTitle":"Update a user"},"href":"/api/1/users/userId/post"}}},"/users/me/":{"get":{"tags":["Personal account"],"summary":"Get the currently authenticated user","operationId":"getCurrentUser","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get the currently authenticated user"},"href":"/api/1/users/me/get"}}},"/users/me/apikey/":{"get":{"tags":["Personal account"],"summary":"Get the current user's API key","operationId":"getAPIKey","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"401":{"description":"Unauthorized"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Get the current user's API key"},"href":"/api/1/users/me/apikey/get"}},"post":{"tags":["Personal account"],"summary":"Generate a new API key for the current user","operationId":"generateAPIKey","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden — not available in demo mode"}},"security":[{"apiKeyAuth":[]}],"x-mint":{"metadata":{"sidebarTitle":"Generate a new API key for the current user"},"href":"/api/1/users/me/apikey/post"}}},"/organizations/{orgId}/balance/":{"get":{"tags":["Organizations"],"summary":"Get organization account balance","operationId":"getBalanceDataForOrg","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOrganizationBalanceResponse"}}}},"400":{"description":"Invalid org ID"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden — billing_visible permission required"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Billing","x-mint":{"metadata":{"sidebarTitle":"Get organization account balance"},"href":"/api/1/organizations/orgId/balance/get"}}},"/organizations/{orgId}/balancehistory/":{"get":{"tags":["Organizations"],"summary":"List balance history for an organization","operationId":"getBalanceHistoryForOrg","parameters":[{"name":"orgId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer"}},{"name":"limit","in":"query","description":"Maximum number of results to return (max 1000)","required":false,"schema":{"type":"integer","default":50,"maximum":1000}},{"name":"before","in":"query","description":"Return records with ID less than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"after","in":"query","description":"Return records with ID greater than this value (cursor-based pagination)","required":false,"schema":{"type":"integer"}},{"name":"timestart","in":"query","description":"Unix timestamp; return records from this time onward","required":false,"schema":{"type":"integer"}},{"name":"timeend","in":"query","description":"Unix timestamp; return records up to this time","required":false,"schema":{"type":"integer"}},{"name":"startafter","in":"query","description":"Return results with ID less than this value","required":false,"schema":{"type":"integer"}},{"name":"tagid","in":"query","description":"Filter by device tag ID","required":false,"schema":{"type":"integer"}},{"name":"tagids","in":"query","description":"Comma-separated list of device tag IDs","required":false,"schema":{"type":"string"}},{"name":"tagname","in":"query","description":"Filter by device tag name","required":false,"schema":{"type":"string"}},{"name":"transactionTypeId","in":"query","description":"Filter by transaction type ID","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOrganizationBalanceHistoryResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden — billing_visible permission required"}},"security":[{"apiKeyAuth":[]}],"x-nav-group":"Billing","x-mint":{"metadata":{"sidebarTitle":"List balance history for an organization"},"href":"/api/1/organizations/orgId/balancehistory/get"}}}},"components":{"schemas":{"NetworkState":{"type":"string","enum":["INACTIVE","INACTIVE-TESTED","FACTORY-PENDING","FACTORY","LIVE-PENDING","LIVE","FROZEN","FROZEN-PENDING","DEAD","DEAD-PENDING","PAUSED-SYS","PAUSED-PENDING-SYS","PAUSED-USER","PAUSED-PENDING-USER","TEST-ACTIVATE","TEST-ACTIVATE-PENDING","TEST-AUTOACTIVATE","TEST-AUTOACTIVATE-PENDING","TEST-HIBERNATE","TEST-HIBERNATE-PENDING"]},"ProfileState":{"type":"string","enum":["AVAILABLE","DOWNLOAD_PENDING","DOWNLOADED","ENABLE_PENDING","ENABLED","DISABLE_PENDING","DISABLED","DELETE_PENDING","ASSIGNED","UNAVAILABLE"]},"AsyncChangeRequest":{"properties":{"id":{"description":"Unique request ID","type":"integer"},"parent_id":{"description":"ID of the parent request for grouped operations","type":"integer","nullable":true},"orgid":{"description":"Organization ID associated with the request","type":"integer","nullable":true},"userid":{"description":"User ID who initiated the request","type":"integer","nullable":true},"request_type":{"description":"Type of change being requested","type":"string","enum":["plan_change","euicc_audit","sim_configuration_update","sim_state_pause","sim_state_unpause","sim_state_activation"]},"reference_type":{"description":"Type of the object being changed","type":"string","enum":["device","link","simcard","sim_configuration"]},"reference_id":{"description":"ID of the object being changed","type":"integer"},"state":{"description":"Current state of the request","type":"string","enum":["initialized","in_progress","complete","complete_with_errors","partially_complete","error","canceled","complete_after_cancel"]},"start_time":{"description":"Timestamp when the request was created (UTC)","type":"string","nullable":true},"update_time":{"description":"Timestamp of the most recent state change (UTC)","type":"string","nullable":true},"metadata":{"description":"Metadata associated with the request","type":"object","nullable":true},"child_ids":{"description":"IDs of child async change requests (included when fetching a single parent request)","type":"array","items":{"type":"integer"}}},"type":"object"},"AsyncChangeRequestResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/AsyncChangeRequest"}},"type":"object"},"ListAsyncChangeRequestsResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"data":{"type":"array","items":{"$ref":"#/components/schemas/AsyncChangeRequest"}}},"type":"object"},"BillingStatement":{"properties":{"id":{"type":"integer"},"orgid":{"type":"integer"},"net_total":{"description":"Net total amount for the billing period","type":"string"},"debit_total":{"description":"Total debits for the billing period","type":"string"},"credit_total":{"description":"Total credits for the billing period","type":"string"},"report_start_date":{"description":"Start date of the billing period","type":"string","format":"date"},"whencreated":{"description":"When the statement record was created","type":"string","format":"date-time"}},"type":"object"},"ListBillingStatementsResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"type":"array","items":{"$ref":"#/components/schemas/BillingStatement"}},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"}},"type":"object"},"CSRDataMessage":{"description":"A Cloud Services Router device data message.","properties":{"id":{"description":"Record ID","type":"integer"},"logged":{"description":"Timestamp when the message was logged (UTC)","type":"string"},"expires":{"description":"Timestamp when the message expires (UTC)","type":"string","nullable":true},"orgid":{"description":"Organization ID","type":"integer"},"deviceid":{"description":"Device ID","type":"integer"},"record_id":{"description":"Unique record identifier string","type":"string"},"device_metadata":{"description":"Optional metadata attached to the device at the time of message","type":"string","nullable":true},"data":{"description":"Message payload data","type":"string"},"tags":{"description":"Tags associated with the message","type":"array","items":{"type":"string"}},"matched_rules":{"description":"Rules that matched this message","type":"array","items":{"properties":{"ruleid":{"description":"ID of the matched rule","type":"integer"},"error":{"description":"Whether the rule produced an error","type":"boolean"},"result_data":{"description":"Output data from the rule","type":"string"}},"type":"object"}}},"type":"object"},"CSRDataMessageListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/CSRDataMessage"}}},"type":"object"},"CSRDataMessageResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"data":{"$ref":"#/components/schemas/CSRDataMessage"}},"type":"object"},"BulkClaimResult":{"properties":{"simcardid":{"description":"SIM card identifier","type":"string"},"device":{"description":"Device ID that was created or assigned","type":"integer"},"link":{"description":"Cellular link ID that was created","type":"integer"},"sim":{"description":"SIM ICCID","type":"string"}},"type":"object"},"BulkClaimCellularLinksResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"type":"array","items":{"$ref":"#/components/schemas/BulkClaimResult"}}},"type":"object"},"BatchJobResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"properties":{"jobid":{"description":"ID of the created batch job","type":"integer"},"preview":{"description":"Whether this was a preview (dry-run) request","type":"boolean"},"valid_tasks":{"description":"List of validated tasks queued in this job","type":"array","items":{"type":"object"}}},"type":"object"}},"type":"object"},"AsyncChangeRequestObject":{"description":"A non-terminal async change request record.","properties":{"id":{"description":"Async change request ID","type":"integer"},"parent_id":{"description":"Parent request ID for child requests","type":"integer","nullable":true},"orgid":{"description":"Organization ID","type":"integer","nullable":true},"userid":{"description":"User ID who initiated the request","type":"integer","nullable":true},"request_type":{"description":"Type of async change request","type":"string","enum":["plan_change","euicc_audit","sim_configuration_update","configure_sim","sim_state_pause","sim_state_unpause","sim_state_activation"]},"reference_type":{"description":"Type of the referenced object","type":"string","enum":["device","link","simcard","sim_configuration"]},"reference_id":{"description":"ID of the referenced object","type":"integer"},"state":{"description":"Current state of the request","type":"string","enum":["initialized","in_progress"]},"start_time":{"description":"Timestamp when the request was created (UTC)","type":"string"},"update_time":{"description":"Timestamp of the last state update (UTC)","type":"string"},"metadata":{"description":"Request-type-specific metadata","type":"object","nullable":true}},"type":"object"},"CellularLinkInDevice":{"description":"A cellular link (SIM profile) associated with a device.","properties":{"id":{"description":"Cellular link ID","type":"integer"},"deviceid":{"description":"Device ID","type":"integer"},"orgid":{"description":"Organization ID","type":"integer"},"sim":{"description":"SIM ICCID","type":"string"},"msisdn":{"description":"Phone number assigned to this SIM","type":"string"},"imsi":{"description":"International Mobile Subscriber Identity","type":"integer"},"state":{"$ref":"#/components/schemas/NetworkState"},"profile_state":{"$ref":"#/components/schemas/ProfileState"},"apn":{"description":"Access Point Name","type":"string"},"zone":{"description":"Coverage zone ID","type":"integer"},"overagelimit":{"description":"Data overage limit in bytes (-1 for unlimited)","type":"integer"},"carrier":{"description":"Carrier backend ID","type":"integer"},"whencreated":{"description":"SIM activation timestamp (UTC)","type":"string"},"whenexpires":{"description":"SIM expiry timestamp (UTC)","type":"string"},"async_change_requests":{"description":"Non-terminal async change requests associated with this cellular link","type":"array","items":{"$ref":"#/components/schemas/AsyncChangeRequestObject"}}},"type":"object"},"DeviceObject":{"properties":{"id":{"description":"Unique device ID","type":"integer"},"name":{"description":"Device name","type":"string"},"orgid":{"description":"Organization ID","type":"integer"},"type":{"description":"Device type","type":"string"},"whencreated":{"description":"Device creation timestamp (UTC)","type":"string"},"tags":{"description":"Tags associated with this device","type":"array","items":{"type":"string"}},"links":{"properties":{"cellular":{"type":"array","items":{"$ref":"#/components/schemas/CellularLinkInDevice"}}},"type":"object"},"eid":{"description":"EID of the sim card, may be null for some sim card types","type":"string","nullable":true},"imei":{"description":"IMEI of the device","type":"string"},"imei_sv":{"description":"IMEI Software Version (IMEISV) of the device","type":"string"},"tunnelable":{"description":"1 if the device supports SpaceBridge tunneling","type":"integer","enum":[0,1]},"hidden":{"description":"1 if the device is hidden on the Dashboard","type":"integer","enum":[0,1]},"phonenumber":{"description":"Phone number assigned to the device, empty string if none","type":"string"},"phonenumber_cost":{"description":"Monthly cost of the assigned phone number","type":"string"},"simcardid":{"description":"SIM card ID associated with the device","type":"integer"},"intended_network_state":{"$ref":"#/components/schemas/NetworkState"},"intended_plan_id":{"description":"Intended plan ID for the SIM","type":"integer","nullable":true},"euicc_tested":{"description":"eUICC test status for the device","type":"string"},"is_hyper":{"description":"True if the device uses a Hyper eUICC SIM rather than a standard UICC","type":"boolean"},"model":{"description":"Device model derived from IMEI TAC lookup, \"Unknown\" if not found","type":"string"},"manufacturer":{"description":"Device manufacturer derived from IMEI TAC lookup, \"Unknown\" if not found","type":"string"},"preflight_starttime":{"description":"Timestamp when the preflight period started, null if not in preflight","type":"string","nullable":true},"preflight_scheduled_endtime":{"description":"Timestamp when the preflight period is scheduled to end, null if not in preflight","type":"string","nullable":true},"async_change_requests":{"description":"Non-terminal async change requests associated with this device","type":"array","items":{"$ref":"#/components/schemas/AsyncChangeRequestObject"}}},"type":"object"},"ListDevicesResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/DeviceObject"}}},"type":"object"},"GetDeviceResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/DeviceObject"}},"type":"object"},"DeviceTagObject":{"properties":{"id":{"description":"Tag ID","type":"integer"},"name":{"description":"Tag name","type":"string"},"deviceids":{"description":"IDs of devices associated with this tag","type":"array","items":{"type":"integer"}}},"type":"object"},"ListDeviceTagsResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"properties":{"tags":{"type":"array","items":{"$ref":"#/components/schemas/DeviceTagObject"}}},"type":"object"}},"type":"object"},"DeviceLocationEntry":{"properties":{"deviceid":{"description":"Device ID","type":"integer"},"name":{"description":"Device name","type":"string"},"latitude":{"description":"Approximate latitude (rounded to 3 decimal places, empty string if unavailable)","oneOf":[{"type":"number"},{"type":"string"}]},"longitude":{"description":"Approximate longitude (rounded to 3 decimal places, empty string if unavailable)","oneOf":[{"type":"number"},{"type":"string"}]},"range":{"description":"Location accuracy range in meters (empty string if unavailable)","oneOf":[{"type":"number"},{"type":"string"}]}},"type":"object"},"ListDeviceLocationsResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"data":{"type":"array","items":{"$ref":"#/components/schemas/DeviceLocationEntry"}}},"type":"object"},"PostDeviceMessageResult":{"properties":{"deviceid":{"description":"Device ID the message was sent to","type":"integer"},"messageid":{"description":"UUID assigned to the queued message","type":"string"}},"type":"object"},"PostDeviceMessageResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"description":"One entry per device the message was queued for","type":"array","items":{"$ref":"#/components/schemas/PostDeviceMessageResult"}}},"type":"object"},"GetDevicesWithOpenSessionsResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"properties":{"deviceids":{"description":"All device IDs with open sessions","type":"array","items":{"type":"integer"}},"activeDeviceIds":{"description":"Device IDs in LIVE state with open sessions","type":"array","items":{"type":"integer"}},"preflightDeviceIds":{"description":"Device IDs in Test Mode with open sessions","type":"array","items":{"type":"integer"}}},"type":"object"}},"type":"object"},"DeviceWebhookObject":{"properties":{"guid":{"description":"Unique webhook GUID used to construct the webhook URL","type":"string"},"deviceid":{"description":"Device ID","type":"integer"},"protocol":{"description":"Network protocol (TCP or UDP)","type":"string"},"port":{"description":"Port number (1–65535)","type":"integer"},"encrypted":{"description":"1 if the webhook connection is encrypted","type":"integer","enum":[0,1]},"url":{"description":"Webhook URL for sending messages to this device","type":"string"}},"type":"object"},"GetDeviceWebhookResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"oneOf":[{"$ref":"#/components/schemas/DeviceWebhookObject"}],"nullable":true}},"type":"object"},"TransferDevicesResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"properties":{"destination_orgid":{"description":"Organization ID the devices were transferred to","type":"integer"},"transferred_deviceids":{"description":"IDs of devices that were successfully transferred","type":"array","items":{"type":"integer"}},"warnings":{"description":"Devices skipped during transfer (e.g. already in the destination org)","type":"array","items":{"properties":{"deviceid":{"type":"integer"},"message":{"type":"string"}},"type":"object"}}},"type":"object"}},"type":"object"},"ListDeviceNamesResponse":{"description":"A mapping of device IDs to device names.","properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"description":"Object where each key is a device ID and the value is the device name","type":"object","additionalProperties":{"type":"string"}}},"type":"object","example":{"success":true,"data":{"12345":"Device Alpha","67890":"Device Beta"}}},"OrganizationUserEntry":{"properties":{"id":{"description":"User ID","type":"integer"},"email":{"description":"User email","type":"string"},"first":{"description":"First name","type":"string"},"last":{"description":"Last name","type":"string"},"permissions":{"description":"List of permissions granted to this user in the organization","type":"array","items":{"type":"string","enum":["billing","activation","changeplan","sbconfig","sbtunnel","deactivate","org_management","billing_visible"]}}},"type":"object"},"OrganizationPendingEntry":{"properties":{"email":{"description":"Email address the invitation was sent to","type":"string"},"inviteid":{"description":"Invitation ID","type":"integer"}},"type":"object"},"OrganizationObject":{"properties":{"id":{"description":"Unique organization ID","type":"integer"},"name":{"description":"Organization display name","type":"string"},"ownerid":{"description":"User ID of the organization owner","type":"integer"},"is_personal":{"description":"1 if this is a personal organization belonging to a single user","type":"integer","enum":[0,1]},"ccemails":{"description":"Comma-separated list of email addresses for credit card receipts","type":"string"},"proplan":{"description":"1 if the organization is on a Pro plan","type":"integer","enum":[0,1]},"invoice_text":{"description":"Custom text appended to invoices","type":"string"},"preflight_timeout_in_days":{"description":"Number of days a device stays in Test Mode before auto-deactivating","type":"integer"},"users":{"description":"Members of the organization","type":"array","items":{"$ref":"#/components/schemas/OrganizationUserEntry"}},"pending":{"description":"Users with pending invitations","type":"array","items":{"$ref":"#/components/schemas/OrganizationPendingEntry"}}},"type":"object"},"ListOrganizationsResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationObject"}}},"type":"object"},"GetOrganizationResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/OrganizationObject"}},"type":"object","example":{"success":true,"data":{"id":2345,"name":"Smart Things LLC","ownerid":1234,"is_personal":0,"ccemails":"finance@example.com","preflight_timeout_in_days":365,"users":[{"id":1234,"email":"holly.graham@example.com","first":"Holly","last":"Graham","permissions":["billing","activation","changeplan","sbconfig","sbtunnel","deactivate","org_management"]}],"pending":[{"email":"newuser@example.com","inviteid":456}]}}},"CreditCard":{"properties":{"address1":{"type":"string"},"address2":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"expirationmonth":{"type":"integer"},"expirationyear":{"type":"integer"},"issuer":{"description":"Card brand (e.g. Visa, Mastercard)","type":"string"},"last4":{"description":"Last 4 digits of the card number","type":"string"},"name":{"description":"Cardholder name","type":"string"},"state":{"type":"string"},"zip":{"type":"string"}},"type":"object"},"BillingAddress":{"properties":{"city":{"type":"string"},"country":{"type":"string"},"invoice_text":{"description":"Custom text shown on invoices","type":"string"},"line1":{"type":"string"},"line2":{"type":"string"},"name":{"type":"string"},"state":{"type":"string"},"zip":{"type":"string"}},"type":"object"},"OrganizationBillingObject":{"properties":{"id":{"description":"Stripe customer ID","type":"string"},"billingmethod":{"description":"Billing method code","type":"integer"},"failed_billing_attempts":{"description":"Number of consecutive failed billing attempts","type":"integer"},"cardset":{"description":"Whether a payment card is on file","type":"boolean"},"card":{"oneOf":[{"$ref":"#/components/schemas/CreditCard"}],"nullable":true},"billing_address":{"oneOf":[{"$ref":"#/components/schemas/BillingAddress"}],"nullable":true},"billing_address_set":{"description":"Whether a billing address is on file","type":"boolean"}},"type":"object"},"GetOrganizationBillingResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/OrganizationBillingObject"}},"type":"object"},"BalanceDataObject":{"properties":{"userid":{"description":"User ID","type":"integer"},"orgid":{"description":"Organization ID","type":"integer"},"balance":{"description":"Current balance in USD","type":"string"},"promobalance":{"description":"Promotional balance in USD","type":"string"},"minbalance":{"description":"Minimum balance threshold for auto top-off in USD","type":"string"},"topoffamount":{"description":"Amount to add when balance falls below minbalance in USD","type":"string"},"has_postpay":{"description":"1 if the org has postpay billing enabled","type":"integer","enum":[0,1]},"pendingcharges":{"description":"Pending charges not yet applied to balance in USD","type":"string","nullable":true}},"type":"object"},"GetOrganizationBalanceResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/BalanceDataObject"}},"type":"object","example":{"success":true,"data":{"balance":"96.05","minbalance":"50.00","orgid":144,"promobalance":"0.00","topoffamount":"0.00","userid":1234,"has_postpay":0}}},"BalanceHistoryEntry":{"properties":{"id":{"description":"Transaction ID","type":"integer"},"orgid":{"description":"Organization ID","type":"integer"},"amount":{"description":"Transaction amount in USD (negative for charges)","type":"string"},"description":{"description":"Transaction description","type":"string"},"time":{"description":"Transaction timestamp (UTC)","type":"string"},"transaction_type_id":{"description":"Transaction type identifier","type":"string"},"orderid":{"description":"Associated order ID, if any","type":"integer"},"linkids":{"description":"Cellular link IDs associated with this transaction","type":"array","items":{"type":"string"}}},"type":"object"},"ListOrganizationBalanceHistoryResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/BalanceHistoryEntry"}}},"type":"object"},"OrganizationDevicePlanEntry":{"properties":{"planid":{"description":"Data plan ID","type":"integer"},"planname":{"description":"Data plan name","type":"string"},"zone":{"description":"Coverage zone","type":"string"},"count":{"description":"Total non-dead devices on this plan","type":"integer"},"activecount":{"description":"Active devices on this plan","type":"integer"},"predeploymentcount":{"description":"Pre-deployment devices on this plan","type":"integer"}},"type":"object"},"ListOrganizationDevicePlansResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationDevicePlanEntry"}}},"type":"object"},"PendingInviteEntry":{"properties":{"inviteid":{"description":"Invitation ID","type":"integer"},"orgname":{"description":"Name of the organization the invite is for","type":"string"},"orgid":{"description":"Organization ID the invite is for","type":"integer"}},"type":"object"},"ListPendingInvitesResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/PendingInviteEntry"}}},"type":"object"},"DataPlanZoneCarrierObject":{"properties":{"apn":{"description":"Carrier APN value for this plan zone","type":"string","nullable":true},"csp":{"description":"Carrier service provider code (present when includecsp is enabled)","type":"string","nullable":true},"pop":{"description":"Carrier point of presence (present when includecsp is enabled)","type":"string","nullable":true},"profile_name":{"description":"Carrier profile display name used by Activation","type":"string","nullable":true},"profile_short_name":{"description":"Carrier profile short name used by Activation","type":"string","nullable":true}},"type":"object"},"DataPlanZoneCarrierMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DataPlanZoneCarrierObject"}},"DataPlanZoneObject":{"properties":{"amount":{"description":"Per-MB amount for this zone (stringified decimal)","type":"string"},"sms":{"description":"Per-SMS amount for this zone (stringified decimal)","type":"string"},"overage":{"description":"Overage amount for this zone (stringified decimal)","type":"string"},"carriers":{"$ref":"#/components/schemas/DataPlanZoneCarrierMap"}},"type":"object"},"DataPlanZonesMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DataPlanZoneObject"}},"DataPlanTierObject":{"properties":{"devicecount":{"description":"Device count for this tier","type":"integer"},"zones":{"$ref":"#/components/schemas/DataPlanZonesMap"}},"type":"object"},"DataPlanTiersMap":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/DataPlanTierObject"}},"DataPlanProfile":{"properties":{"carrierId":{"description":"Carrier ID","type":"integer"},"name":{"description":"Profile name","type":"string"},"offerId":{"description":"Carrier offer ID","type":"integer"}},"type":"object"},"DataPlanDetailsObject":{"properties":{"id":{"description":"Unique plan ID","type":"integer"},"name":{"description":"Plan name","type":"string"},"description":{"description":"Plan description","type":"string"},"data":{"description":"Included data in bytes","type":"integer"},"billingperiod":{"description":"Billing period in days","type":"integer"},"recurring":{"description":"1 if the plan auto-renews","type":"integer","enum":[0,1]},"enabled":{"description":"1 if the plan is currently available","type":"integer","enum":[0,1]},"developerplan":{"description":"1 if this is a developer plan","type":"integer","enum":[0,1]},"groupid":{"description":"Plan group ID","type":"integer"},"partnerid":{"description":"Partner this plan belongs to","type":"integer"},"display_category":{"description":"Display category for this plan","type":"string","nullable":true},"cellular_coverage_region_id":{"description":"Cellular coverage region ID","type":"integer","nullable":true},"use_variable_rates":{"description":"Whether this plan uses variable rates","type":"boolean"},"is_dynamic_pool":{"description":"Whether this plan uses a dynamic pool","type":"boolean"},"cellular_coverage_region":{"oneOf":[{"$ref":"#/components/schemas/PlanCoverageRegion"}],"nullable":true,"description":"Coverage region details, present when cellular_coverage_region_id is set"},"tiers":{"$ref":"#/components/schemas/DataPlanTiersMap"},"current_tier":{"description":"Current pricing tier for the requesting organization","type":"string","nullable":true},"zones":{"oneOf":[{"$ref":"#/components/schemas/DataPlanZonesMap"}],"nullable":true,"description":"Top-level zone view for the current_tier (legacy compatibility)"},"amountglobal":{"description":"Legacy flattened amount for the global zone (key name matches zone name casing)","type":"string","nullable":true},"smsglobal":{"description":"Legacy flattened SMS amount for the global zone (key name matches zone name casing)","type":"string","nullable":true},"overageglobal":{"description":"Legacy flattened overage amount for the global zone (key name matches zone name casing)","type":"string","nullable":true},"variable_rates_range":{"oneOf":[{"$ref":"#/components/schemas/PlanVariableRatesRange"}],"nullable":true,"description":"Variable rate range when include_rate_card_range is requested"},"profiles":{"description":"Carrier profiles (present on single-plan responses only)","type":"array","items":{"$ref":"#/components/schemas/DataPlanProfile"},"nullable":true}},"type":"object"},"ListPlansResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"description":"ID of the last record returned, for cursor-based pagination","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/DataPlanDetailsObject"}}},"type":"object"},"GetPlanResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/DataPlanDetailsObject"}},"type":"object"},"PlanPriceEntry":{"properties":{"plan_id":{"description":"Plan ID","type":"integer"},"pricing_id":{"description":"Pricing entry ID","type":"integer"},"zone":{"description":"Coverage zone","type":"string"},"account_tier":{"description":"Pricing tier name (e.g. BASE)","type":"string"},"amount":{"description":"Price per billing period","type":"number"},"sms":{"description":"Price per SMS","type":"number"},"overage":{"description":"Overage price per MB","type":"number"},"zero_data_rate_flag":{"description":"Whether a zero-data-rate applies","type":"integer","enum":[0,1]},"zero_data_rate":{"description":"Zero data rate price per MB","type":"number","nullable":true}},"type":"object"},"GetPlanPricingResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"type":"array","items":{"$ref":"#/components/schemas/PlanPriceEntry"}}},"type":"object"},"PlanCoverageRegion":{"properties":{"id":{"description":"Region ID","type":"integer"},"display_name":{"description":"Region display name","type":"string"},"description":{"description":"Region description","type":"string"}},"type":"object"},"PlanVariableRatesRange":{"properties":{"min":{"description":"Minimum price per megabyte","type":"number","nullable":true},"max":{"description":"Maximum price per megabyte","type":"number","nullable":true}},"type":"object"},"DevicesReportResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"type":"array","items":{"type":"object"}}},"type":"object"},"SMSInboundResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"properties":{"msgcount":{"description":"Number of device-terminated SMS messages sent","type":"integer"}},"type":"object"}},"type":"object"},"SimpleSuccessResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"}},"type":"object"},"PaginationLinks":{"properties":{"path":{"description":"The API endpoint path","type":"string"},"base":{"description":"The API base URL","type":"string"},"next":{"description":"URL to retrieve the next page of results","type":"string"}},"type":"object"},"SimConfigurationObject":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string","nullable":true},"enabled_carrier_id":{"type":"integer"},"fallback_carrier_id":{"type":"integer"},"disabled_carrier_ids":{"type":"array","items":{"type":"integer"}},"applicable_plan_ids":{"description":"Only present when plan_ids or orgid is included in the request","type":"array","items":{"type":"integer"},"nullable":true}},"type":"object"},"SimConfigurationListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/SimConfigurationObject"}}},"type":"object"},"SimConfigurationResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/SimConfigurationObject"}},"type":"object"},"ConfigureSimCardsData":{"properties":{"requested_deviceids":{"description":"Device IDs for which configuration was successfully dispatched","type":"array","items":{"type":"integer"}},"requested_simcardids":{"description":"SIM card IDs for which configuration was successfully dispatched","type":"array","items":{"type":"integer"}},"async_request_id":{"description":"Parent async change request tracking this configure-sim operation","type":"integer"},"child_ids":{"description":"IDs of per-device child async change requests under async_request_id","type":"array","items":{"type":"integer"}},"warnings":{"type":"array","items":{"type":"string"}}},"type":"object"},"ConfigureSimCardsResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/ConfigureSimCardsData"}},"type":"object"},"TunnelKeyObject":{"properties":{"id":{"type":"integer"},"userid":{"type":"integer"},"public_key":{"description":"OpenSSH-format RSA public key","type":"string"},"disabled":{"description":"1 if the key is disabled","type":"integer","enum":[0,1]},"created_at":{"type":"string","format":"date-time"},"private_key":{"description":"RSA private key; only present when the server generates the keypair (no public_key supplied on create)","type":"string","nullable":true}},"type":"object"},"TunnelKeyListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"description":"Query limit","type":"integer"},"size":{"description":"Number of results returned","type":"integer"},"continues":{"description":"Whether more results are available","type":"boolean"},"data":{"type":"array","items":{"$ref":"#/components/schemas/TunnelKeyObject"}}},"type":"object"},"TunnelKeyResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/TunnelKeyObject"}},"type":"object"},"TunnelKeyIdData":{"properties":{"id":{"type":"integer"}},"type":"object"},"TunnelKeyIdResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/TunnelKeyIdData"}},"type":"object"},"UsageDataRecord":{"properties":{"linkid":{"description":"Cellular link (SIM) ID","type":"integer"},"record_id":{"description":"Unique usage record ID, used for cursor-based pagination","type":"integer"},"session_begin":{"description":"Session start time (UTC)","type":"string"},"timestamp":{"description":"Session end time (UTC)","type":"string"},"bytes":{"description":"Bytes transferred in this session","type":"integer"},"imeisv":{"description":"Raw IMEISV (15-digit IMEI + 2-digit software version)","type":"string"},"imei":{"description":"IMEI derived from the IMEISV","type":"string"},"cellid":{"description":"Cell tower ID","type":"integer"},"lac":{"description":"Location Area Code","type":"integer"},"radio_access_technology":{"description":"Radio access technology (e.g. LTE, 3G)","type":"string"},"network_name":{"description":"Carrier network name","type":"string"},"sim":{"description":"SIM ICCID","type":"string"},"simcardid":{"description":"SIM card ID","type":"integer"},"data_plan_id":{"description":"Data plan subscription ID active during this session","type":"integer"},"tags":{"description":"Device tags at time of record","type":"array","items":{"type":"string"}},"country":{"description":"Country code (present when getcountryinfo=true)","type":"string"},"profile_name":{"description":"SIM profile name (present when getprofileinfo=true)","type":"string"},"latitude":{"description":"Approximate latitude (present when getlocationinfo=true)","type":"number","nullable":true},"longitude":{"description":"Approximate longitude (present when getlocationinfo=true)","type":"number","nullable":true}},"type":"object"},"UsageDataListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"description":"Maximum number of records returned per page","type":"integer"},"size":{"description":"Number of records in this response","type":"integer"},"continues":{"description":"True if more records are available","type":"boolean"},"lastid":{"description":"record_id of the last record returned; pass as startafter to fetch the next page","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UsageDataRecord"}}},"type":"object"},"UsageMonthlyRecord":{"properties":{"linkid":{"description":"Cellular link (SIM) ID","type":"integer"},"record_id":{"description":"Unique monthly record identifier (linkid concatenated with YYYYMM, e.g. \"8676201801\")","type":"string"},"month":{"description":"Calendar month (1–12)","type":"integer"},"year":{"description":"Calendar year","type":"integer"},"bytes":{"description":"Total bytes used in this month","type":"integer"},"session_count":{"description":"Number of data sessions in this month","type":"string"},"reporting_windows_with_usage":{"description":"Number of reporting windows that recorded usage","type":"string"}},"type":"object"},"UsageMonthlyListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"description":"Maximum number of records returned per page","type":"integer"},"size":{"description":"Number of records in this response","type":"integer"},"continues":{"description":"True if more records are available","type":"boolean"},"lastid":{"description":"record_id of the last record returned; pass as startat to fetch the next page","type":"string"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UsageMonthlyRecord"}}},"type":"object"},"UsageDailyRecord":{"properties":{"linkid":{"description":"Cellular link (SIM) ID","type":"integer"},"record_id":{"description":"Unique daily record ID, used for cursor-based pagination","type":"integer"},"date":{"description":"Usage date (YYYY-MM-DD)","type":"string"},"bytes":{"description":"Total bytes used on this date","type":"integer"},"session_count":{"description":"Number of data sessions on this date","type":"integer"},"reporting_windows_with_usage":{"description":"Number of reporting windows that recorded usage","type":"integer"}},"type":"object"},"UsageDailyListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"description":"Maximum number of records returned per page","type":"integer"},"size":{"description":"Number of records in this response","type":"integer"},"continues":{"description":"True if more records are available","type":"boolean"},"lastid":{"description":"record_id of the last record returned; pass as startat to fetch the next page","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UsageDailyRecord"}}},"type":"object"},"UsageBillingRecord":{"properties":{"linkid":{"description":"Cellular link (SIM) ID","type":"integer"},"cur_period_end":{"description":"End timestamp of this 30-day billing period (UTC)","type":"string"},"periods_back":{"description":"0 = current period, 1 = one period ago, etc.","type":"string"},"record_id":{"description":"Unique record identifier (linkid concatenated with periods_back)","type":"string"},"bytes":{"description":"Total bytes used in this billing period","type":"integer"}},"type":"object"},"UsageBillingListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"description":"Maximum number of records returned per page","type":"integer"},"size":{"description":"Number of records in this response","type":"integer"},"continues":{"description":"True if more records are available","type":"boolean"},"lastid":{"description":"record_id of the last record returned; pass as startat to fetch the next page","type":"string"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UsageBillingRecord"}}},"type":"object"},"UsageSIMCurrentBillingPeriodRecord":{"properties":{"current_billing_usage":{"description":"Total bytes used in the current billing period","type":"integer"},"linkids":{"description":"Cellular link IDs that contributed usage to the total","type":"array","items":{"type":"integer"}},"simcardid":{"description":"SIM card ID","type":"integer"},"billing_period_end":{"description":"Current billing period end timestamp (YYYY-MM-DD HH:mm:ss), null when the SIM has no active billing period","type":"string","nullable":true}},"type":"object"},"UsageSIMCurrentBillingPeriodResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/UsageSIMCurrentBillingPeriodRecord"}},"type":"object"},"UsageLastPeriodResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"description":"Last billing period with usage activity","type":"object"}},"type":"object"},"UsageTotalResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"description":"Always contains exactly one element with the aggregated totals","type":"array","items":{"properties":{"total_bytes":{"description":"Total bytes used in the requested period","type":"string"},"total_sessions":{"description":"Total number of data sessions","type":"string"},"reporting_windows_with_usage":{"description":"Total number of reporting windows that recorded usage","type":"string"}},"type":"object"}}},"type":"object"},"SMSUsageRecord":{"properties":{"linkid":{"description":"Cellular link (SIM) ID","type":"integer"},"record_id":{"description":"Unique SMS record ID, used for cursor-based pagination","type":"integer"},"timestamp":{"description":"Time the SMS was sent/received (UTC)","type":"string"},"direction":{"description":"SMS direction (MT = mobile-terminated/inbound, MO = mobile-originated/outbound)","type":"string"},"other_number":{"description":"The external phone number involved in the SMS","type":"string"},"sendtime_is_approximate":{"description":"1 if the send time is approximate rather than exact","type":"integer","enum":[0,1]},"bootstrap_id":{"description":"Internal eUICC mapping ID","type":"integer"}},"type":"object"},"SMSUsageListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"description":"Maximum number of records returned per page","type":"integer"},"size":{"description":"Number of records in this response","type":"integer"},"continues":{"description":"True if more records are available","type":"boolean"},"lastid":{"description":"record_id of the last record returned; pass as startafter to fetch the next page","type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"data":{"type":"array","items":{"$ref":"#/components/schemas/SMSUsageRecord"}}},"type":"object"},"UserObject":{"properties":{"id":{"type":"integer"},"email":{"type":"string","format":"email"},"first":{"type":"string"},"last":{"type":"string"},"role":{"type":"string"},"partnerid":{"type":"integer"},"registered":{"type":"string","format":"date-time"},"is_verified":{"type":"integer","enum":[0,1]},"has_password":{"type":"integer","enum":[0,1]},"defaultaddressid":{"type":"integer","nullable":true},"deleted":{"type":"integer","enum":[0,1]},"personal_org":{"description":"Personal organization ID; present on single-user responses","type":"integer","nullable":true},"impersonated_by":{"description":"Present when the current session is being impersonated","type":"object","nullable":true}},"type":"object"},"UserListResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"limit":{"type":"integer"},"size":{"type":"integer"},"continues":{"type":"boolean"},"lastid":{"type":"integer"},"data":{"type":"array","items":{"$ref":"#/components/schemas/UserObject"}},"links":{"$ref":"#/components/schemas/PaginationLinks"}},"type":"object"},"UserResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/UserObject"}},"type":"object"},"APIKeyData":{"properties":{"apikey":{"type":"string"}},"type":"object"},"APIKeyResponse":{"properties":{"success":{"$ref":"#/components/schemas/SuccessProperty"},"data":{"$ref":"#/components/schemas/APIKeyData"}},"type":"object"},"SuccessProperty":{"description":"Indicates whether the request was successful.","type":"boolean","example":true}},"securitySchemes":{"apiKeyAuth":{"type":"http","description":"HTTP Basic authentication using API keys. Set the username to `apikey` and the password to your API key. You can find your API key on the Hologram Dashboard under Account Settings.","scheme":"basic"},"bearerAuth":{"type":"http","description":"Bearer token authentication using an access token.","bearerFormat":"JWT","scheme":"bearer"}}},"tags":[{"name":"Devices","description":"Devices"},{"name":"SIM Configuration","description":"SIM Configuration","x-group":"SIM Configuration - Conductor"},{"name":"SIMCards","description":"SIM Cards","x-group":"SIM Cards"},{"name":"Organizations","description":"Organizations"},{"name":"Personal account","description":"Personal account"},{"name":"Async Change Requests","description":"Async Change Requests"},{"name":"Cellular Links","description":"Cellular Links"},{"name":"Usage","description":"Usage"}]}