# EdgeIQ Documentation > Documentation for EdgeIQ ## Guides - [Quick Start Guide](https://dev.edgeiq.io/docs/quick-start-guide.md) - [Login to EdgeIQ](https://dev.edgeiq.io/docs/installing-edge-local-service-for-the-first-time.md) - [Overview of the EdgeIQ Web Application](https://dev.edgeiq.io/docs/overview-of-the-edgeiq-portal.md) - [Connect your first device](https://dev.edgeiq.io/docs/onboarding-and-setup.md) - [Resources](https://dev.edgeiq.io/docs/resources.md) - [Glossary](https://dev.edgeiq.io/docs/definitions-terminology.md) - [Onboard Your First Device](https://dev.edgeiq.io/docs/onboard-your-first-device.md) - [Create a Device Profile for Gateway Devices](https://dev.edgeiq.io/docs/create-a-device-profile-for-gateway-devices.md) - [Create a Gateway Device Configuration](https://dev.edgeiq.io/docs/create-gateway-device-configuration-1.md): Steps on how to create a gateway device. - [Create a Device Profile for Endpoint Devices](https://dev.edgeiq.io/docs/create-a-device-profile-for-endpoint-devices-1.md) - [Create an Endpoint Device Configuration](https://dev.edgeiq.io/docs/create-endpoint-device-configuration-1.md) - [Device Management](https://dev.edgeiq.io/docs/device-management-1.md) - [Device Onboarding](https://dev.edgeiq.io/docs/device-onboarding.md) - [Perform a Bulk Import of Devices](https://dev.edgeiq.io/docs/perform-a-bulk-import-of-devices.md) - [Device Profile Abilities](https://dev.edgeiq.io/docs/device-type-abilities.md): This page describes the different device profile abilities supported by EdgeIQ We are working to have a similar grouping of abilities also visible on the Abilities tab of the Device Profile page to ensure a unified experience. - [Device Operations](https://dev.edgeiq.io/docs/deviceops.md) - [Create, Manage and Monitor Network Connectivity](https://dev.edgeiq.io/docs/create-and-apply-a-network-configuration-for-a-gateway-device.md): Network Connectivity Monitoring is a core feature of EdgeIQ Symphony's Device Management capabilities to monitor and troubleshoot the network performance of your IoT devices. - [File Management for Edge](https://dev.edgeiq.io/docs/file-management-for-edge.md) - [Execution Records](https://dev.edgeiq.io/docs/execution-records.md) - [Collecting Custom Diagnostic Dumps using Coda](https://dev.edgeiq.io/docs/collecting-custom-diagnostic-dumps-from-coda.md): This documentation page provides step-by-step instructions on how to use EdgeIQ's enhanced log collection feature to retrieve custom files and entire folders from your Coda-based devices. Learn how to download specific application logs or any diagnostic dump for advanced remote troubleshooting. - [Storing User-Defined Data - Device Metadata](https://dev.edgeiq.io/docs/storing-user-defined-data-device-metadata.md): Use Device Metadata to store additional device information and enable business centric workflows. - [Generic Integrations](https://dev.edgeiq.io/docs/generic-integrations.md): Generic Integrations allow you to interact with any third-party system that offers a REST API via username/password or token-based authentication. - [Coda Software Installation Guide](https://dev.edgeiq.io/docs/software-installation-guide.md) - [Requirements](https://dev.edgeiq.io/docs/edge-software-installation-overview.md) - [Installation Using Ubuntu SNAPs](https://dev.edgeiq.io/docs/installation-through-ubuntu-snaps.md): Steps to install EdgeIQ Coda on devices supporting Canonical SNAPS, including Ubuntu and Ubuntu Core. - [Installation Using edgectl](https://dev.edgeiq.io/docs/installation-instructions.md) - [Installation Using Manual Method](https://dev.edgeiq.io/docs/installation-using-manual-method-1.md) - [Configuring Edge Devices with TPM Support for Enhanced Security](https://dev.edgeiq.io/docs/configuring-edge-devices-with-tpm-support-for-enhanced-security.md) - [Managing Certificate Revocation Lists (CRLs)](https://dev.edgeiq.io/docs/managing-certificate-revocation-lists-crls.md) - [Installation Using Docker](https://dev.edgeiq.io/docs/installation-using-docker.md): This guide explains how to install and configure the Coda agent using Docker containers. Coda is EdgeIQ's lightweight edge agent for IoT device management and data collection. - [References](https://dev.edgeiq.io/docs/references.md) - [IoT Data Transfer Endpoints](https://dev.edgeiq.io/docs/iot-data-transfer-endpoints.md) - [Connecting devices via MQTT](https://dev.edgeiq.io/docs/connecting-devices-via-mqtt.md): Guide describing a direct MQTT connection, for example for small embedded devices with a custom firmware. No EdgeIQ Coda installation needed. - [Bulk Device Creation](https://dev.edgeiq.io/docs/bulk-device-creation.md) - [Example - Managing Snaps on Ubuntu-Core Devices](https://dev.edgeiq.io/docs/example-managing-snaps-on-ubuntu-core-devices.md) - [Tech Notes](https://dev.edgeiq.io/docs/tech-notes.md) ## API Reference - [API Token Reset](https://dev.edgeiq.io/reference/post-user-api_token_reset.md): Reset permanent API Token associated with this user. - [Get Temporary API Token](https://dev.edgeiq.io/reference/post-user-authenticate.md): Get temporary API Token for this user. - [Commands](https://dev.edgeiq.io/reference/commands.md) - [List all Commands visible to the authorized user.](https://dev.edgeiq.io/reference/get_commands.md): List all Commands visible to the authorized user. - [Creates a Command](https://dev.edgeiq.io/reference/post_commands.md): Creates a Command used to send outbound command data to one or more devices. - [Get Command by ID](https://dev.edgeiq.io/reference/get_commands_by_id.md): Get Command by ID - [Updates a Command](https://dev.edgeiq.io/reference/put_commands_by_id.md): Updates a Command - [Deletes a Command](https://dev.edgeiq.io/reference/delete_commands_by_id.md): Deletes a Command - [List all command executions by command id.](https://dev.edgeiq.io/reference/get_commands_on_command_executions_by_id.md): List all command executions by command id. - [Deletes multiple Commands](https://dev.edgeiq.io/reference/delete_commands_bulk.md): Deletes multiple Commands - [Companies](https://dev.edgeiq.io/reference/companies.md) - [List all Companies](https://dev.edgeiq.io/reference/get_companies.md): List all Companies - [Creates a Company](https://dev.edgeiq.io/reference/post_companies.md): Creates a new customer account, attached as a sub-account to the currently authenticated user's company - [Get Company by ID](https://dev.edgeiq.io/reference/get_companies_by_id.md): Get Company by ID - [Updates a Company](https://dev.edgeiq.io/reference/put_companies_by_id.md): Updates a Company - [Deletes a Company](https://dev.edgeiq.io/reference/delete_companies_by_id.md): Deletes a Company - [Get File of Company by ID](https://dev.edgeiq.io/reference/get_companies_by_id_files.md): Get Files of Company by ID - [Upload Company logo](https://dev.edgeiq.io/reference/post_companies_logo_upload.md): Upload Company logo using the company id - [Get Device Fleets](https://dev.edgeiq.io/reference/get_devices_fleets.md): List all fleets that a specific device belongs to. This includes both static fleets (where the device was manually added) and dynamic fleets (where the device matches the filter criteria). - [Creates a Device Event](https://dev.edgeiq.io/reference/post_device_events.md): Creates a Device Event - [Creates multiple Device Event](https://dev.edgeiq.io/reference/post_device_events_bulk.md): Creates multiple Device Event - [Device Configs](https://dev.edgeiq.io/reference/device-configs.md) - [List all Device Configs](https://dev.edgeiq.io/reference/get_device_configs.md): List all Device Configs - [Creates a Device Config](https://dev.edgeiq.io/reference/post_device_configs.md): Device configurations describe the configuration attributes for each connection on a EdgeIQ Edge device. - [Get Device Config by ID](https://dev.edgeiq.io/reference/get_device_configs_by_id.md): Get Device Config by ID - [Updates a Device Config](https://dev.edgeiq.io/reference/put_device_configs_by_id.md): Updates a Device Config - [Deletes a Device Config](https://dev.edgeiq.io/reference/delete_device_configs_by_id.md): Deletes a Device Config - [Deletes multiple Device Configs](https://dev.edgeiq.io/reference/delete_device_configs_bulk.md): Deletes multiple Device Configs - [List all device location observations](https://dev.edgeiq.io/reference/get_device_location_observations.md): List all device location observations. Default system ordering is by `created_at`. To order by `generated_at`, use the `order_by` parameter with `generated_at` (ascending) or `-generated_at` (descending). - [Creates a device location observation. Note that creating a location observation will trigger the associated device's last known location. When creating a device location observation, you may set `device_id` to either the system id or the device's unique id. If you use the device's unique id you must also specify the device's company in the `company_id` field so that the system can uniquely identify the device. After creation, `device_id` will always contain the device's system id.](https://dev.edgeiq.io/reference/post_device_location_observations.md): Creates a new device location observation - [Get device location observation by ID](https://dev.edgeiq.io/reference/get_device_location_observations_by_id.md): Get device location observation by ID - [Method Not Allowed](https://dev.edgeiq.io/reference/put_device_location_observations_by_id.md): Updating a device location observation is not allowed. This call will return 405 Method Not Allowed. - [Deletes a device location observation](https://dev.edgeiq.io/reference/delete_device_location_observations_by_id.md): Deletes a device location observation - [List all Device Templates](https://dev.edgeiq.io/reference/get_device_templates.md): List all Device Templates - [Creates a Device Template](https://dev.edgeiq.io/reference/post_device_templates.md): Creates a Device Template - [Get Device Template by ID](https://dev.edgeiq.io/reference/get_device_templates_by_id.md): Get Device Template by ID - [Updates a Device Template](https://dev.edgeiq.io/reference/put_device_templates_by_id.md): Updates a Device Template - [Deletes a Device Template](https://dev.edgeiq.io/reference/delete_device_templates_by_id.md): Deletes a Device Template - [Device Transfer Requests](https://dev.edgeiq.io/reference/device-transfer-requests.md) - [List all Device Transfer Requests](https://dev.edgeiq.io/reference/get_device_transfer_requests.md): List all Device Transfer Requests - [Creates a Device Transfer Request](https://dev.edgeiq.io/reference/post_device_transfer_requests.md): Creates a Device Transfer Request - [Get Device Transfer Request by ID](https://dev.edgeiq.io/reference/get_device_transfer_requests_by_id.md): Get Device Transfer Request by ID - [Updates a Device Transfer Request](https://dev.edgeiq.io/reference/put_device_transfer_requests_by_id.md): Updates a Device Transfer Request - [Deletes a Device Transfer Request](https://dev.edgeiq.io/reference/delete_device_transfer_requests_by_id.md): Deletes a Device Transfer Request - [Initiate Device Transfer](https://dev.edgeiq.io/reference/post_initiate_device_transfer_request_by_id.md): Initiates Device transfer to the destination company - [Deletes multiple Device Transfer Requests](https://dev.edgeiq.io/reference/delete_device_transfer_requests_bulk.md): Deletes multiple Device Transfer Requests - [Device Types](https://dev.edgeiq.io/reference/device-types.md) - [List all Device Types](https://dev.edgeiq.io/reference/get_device_types.md): List all Device Types - [Creates a Device Type](https://dev.edgeiq.io/reference/post_device_types.md): Creates a Device Type - [Get Device Type by ID](https://dev.edgeiq.io/reference/get_device_types_by_id.md): Get Device Type by ID - [Updates a Device Type](https://dev.edgeiq.io/reference/put_device_types_by_id.md): Updates a Device Type - [Deletes a Device Type](https://dev.edgeiq.io/reference/delete_device_types_by_id.md): Deletes a Device Type - [Get the list of available file URLs](https://dev.edgeiq.io/reference/get_device_types_list_edge_updates_by_id.md): Get the list of available Edge software file URLs for a Device Type - [Deletes multiple Device Types](https://dev.edgeiq.io/reference/delete_device_types_bulk.md): Deletes multiple Device Types - [List Command(s) on Device Type](https://dev.edgeiq.io/reference/get_command_on_device_type_by_id.md): List Command(s) on Device Type - [Attach Command to Device Type](https://dev.edgeiq.io/reference/put_attach_command_to_device_type.md): Attach Command to Device Type - [Detach Command from Device Type](https://dev.edgeiq.io/reference/delete_detach_command_from_device_type.md): Detach Command from Device Type - [List Configuration(s) on Device Type](https://dev.edgeiq.io/reference/get_configuration_on_device_type_by_id.md): List Configuration(s) on Device Type - [Attach Configuration to Device Type](https://dev.edgeiq.io/reference/put_attach_configuration_to_device_type.md): Attach Configuration to Device Type - [Detach Configuration from Device Type](https://dev.edgeiq.io/reference/delete_detach_configuration_from_device_type.md): Detach Configuration from Device Type - [List Ingestor(s) on Device Type](https://dev.edgeiq.io/reference/get_ingestor_on_device_type_by_id.md): List Ingestor(s) on Device Type - [Attach Ingestor to Device Type](https://dev.edgeiq.io/reference/put_attach_ingestor_to_device_type.md): Attach Ingestor to Device Type - [Detach Ingestor from Device Type](https://dev.edgeiq.io/reference/delete_detach_ingestor_from_device_type.md): Detach Ingestor from Device Type - [List Pollable Attribute(s) on Device Type](https://dev.edgeiq.io/reference/get_pollable_attributes_on_device_type_by_id.md): List Pollable Attribute(s) on Device Type - [Attach Pollable Attribute to Device Type](https://dev.edgeiq.io/reference/put_attach_pollable_attributes_to_device_type.md): Attach Pollable Attribute to Device Type - [Detach Pollable Attribute from Device Type](https://dev.edgeiq.io/reference/delete_detach_pollable_attributes_from_device_type.md): Detach Pollable Attribute from Device Type - [List Settings(s) on Device Type](https://dev.edgeiq.io/reference/get_setting_on_device_type_by_id.md): List Settings(s) on Device Type - [Attach Setting to Device Type](https://dev.edgeiq.io/reference/put_attach_setting_to_device_type.md): Attach Setting to Device Type - [Detach Setting from Device Type](https://dev.edgeiq.io/reference/delete_detach_setting_from_device_type.md): Detach Setting from Device Type - [List Rule(s) on Device Type](https://dev.edgeiq.io/reference/get_rules_on_device_type_by_id.md): List Rule(s) on Device Type - [Attach Rule to Device Type](https://dev.edgeiq.io/reference/put_attach_rule_to_device_type.md): Attach Rule to Device Type - [Detach Rule from Device Type](https://dev.edgeiq.io/reference/delete_detach_rule_from_device_type.md): Detach Rule from Device Type - [Devices](https://dev.edgeiq.io/reference/devices.md) - [Creates multiple Devices via Device Template](https://dev.edgeiq.io/reference/post_device_templates_create_bulk.md): Creates multiple Devices via Device Template - [Creates multiple Devices](https://dev.edgeiq.io/reference/post_devices_bulk.md): Creates multiple Devices - [Updates multiple Devices](https://dev.edgeiq.io/reference/put_devices_bulk.md): Updates multiple Devices - [Deletes multiple Devices](https://dev.edgeiq.io/reference/delete_devices_bulk.md): Deletes multiple Devices - [Bulk Execute Command on multiple devices](https://dev.edgeiq.io/reference/post_devices_bulk_commands_execute.md): Bulk Execute Command on multiple devices - [Download devices' info via CSV file.](https://dev.edgeiq.io/reference/get_devices_csv_bulk_download.md): Download devices' info via CSV file. - [Bulk Create/Edit/Delete devices via CSV file](https://dev.edgeiq.io/reference/post_devices_csv_bulk_upload.md): Bulk Create/Edit/Delete devices via CSV file. ## CSV Format The CSV file must have either **21 columns** (device-only, legacy) or **25 columns** (device + SIM, EIQ-5996), in the following order: | # | Column Name | Required (Create) | Required (Update/Delete) | Format | |---|-------------|-------------------|--------------------------|--------| | 1 | Device Name | Yes | No | Text | | 2 | Device Unique ID | Yes | Yes | Text (MAC address format recommended) | | 3 | Serial Number | No | No | Text | | 4 | Location | No | No | Text | | 5 | Account ID | Yes | Yes | Valid Account/Company ID | | 6 | Device Type ID | Yes | No | Valid Device Type ID | | 7 | Heartbeat Period (second) | Yes | No | Integer >= 0 (0 means not set) | | 8 | Device Cell Number | No | No | Text | | 9 | SMS Command Password | No | No | Text | | 10 | Device Config ID | No | No | Device Config ID or name | | 11 | Active | No | No | `true`, `false`, or empty (default: true) | | 12 | Heartbeat Values | No | No | Comma-separated values | | 13 | Device Integration ID | No | No | Valid Integration ID | | 14 | Cloud Native Integration ID | No | No | Valid Cloud Native Integration ID | | 15 | Parent Device ID | No | No | Valid Device ID (for attached endpoints) | | 16 | Tags | No | No | Semicolon-separated tags (e.g., `tag1;tag2`) | | 17 | Metadata | No | No | Semicolon-separated key:value pairs (e.g., `key1:value1;key2:value2`) | | 18 | Enforce Secure MQTT | No | No | `true`, `false`, or empty | | 19 | MQTT Password | No | No | Text (leave blank for default) | | 20 | Delete? | No | No | `true` to delete device, `false` or empty otherwise | | 21 | Update? | No | No | `true` to update device, `false` or empty otherwise | | 22 | ICCID *(SIM)* | No | No | 18-22 digits. Globally unique. Triggers SIM creation when non-empty. | | 23 | MSISDN *(SIM)* | No | No | Phone number associated with the SIM. | | 24 | Communication Plan *(SIM)* | No | No | Carrier communication plan name. | | 25 | Rate Plan *(SIM)* | No | No | Carrier rate plan name. | ## Operation Types - **Create**: When both Delete and Update columns are `false` or empty - **Update**: When Update column is `true` - **Delete**: When Delete column is `true` Note: Delete and Update cannot both be `true` for the same row. ## Validation Rules - **Heartbeat Period**: Must be an integer >= 0. Negative values are not allowed. Value of 0 is treated as "not set". - **Boolean fields** (Active, Enforce Secure MQTT, Delete, Update): Must be `true`, `false`, or empty. - **Metadata**: Must be in format `key:value` pairs separated by semicolons. - **Tags**: Semicolon-separated list of tag names. - **ICCID** *(SIM)*: When provided, must be 18-22 digits and unique platform-wide. ## SIM behavior (25-column variant only) - **Create row + ICCID populated**: device is created and a SIM is created and linked to it. - **Create row + SIM fields populated but ICCID empty**: device is created, no SIM is created (a warning is raised by `/devices/csv_validate`). - **Update row + ICCID populated, no SIM exists**: device is updated and a new SIM is created. - **Update row + ICCID populated, SIM already exists**: device is updated and the existing SIM is updated in place (its id is preserved). - **Update row + ICCID empty**: device is updated; the existing SIM (if any) is left untouched. - **Delete row**: device is deleted; any associated SIM is removed automatically by FK cascade. ### Atomicity Device + SIM creation is atomic per row. If the SIM cannot be created or updated (validation error, ICCID conflict, DB error), the device write is rolled back so we never leave an orphan device. The row is reported as failed in the bulk response. ### Bulk response summary The `bulk_response.metadata` JSONB field is populated with SIM-specific counters when SIM-related work happened during the import: ```json { "metadata": { "sims_created": 10, "sims_updated": 3, "sims_deleted": 1, "sims_failed": 0 } } ``` ## Update Behavior When updating devices, the following fields are **replaced** (not merged): - **Tags**: The entire tags list is replaced with the values from the CSV. To add a new tag while keeping existing ones, include all existing tags plus the new one in the CSV. - **Metadata**: The entire metadata object is replaced with the values from the CSV. To add a new key while keeping existing ones, include all existing key:value pairs plus the new one in the CSV. If these columns are left empty during an update, the existing values are preserved. ## Limits - Maximum 1000 devices per upload - [Validate CSV file before bulk upload](https://dev.edgeiq.io/reference/post_devices_csv_validate.md): Validates a CSV file for device bulk upload without actually creating/updating devices. Use this endpoint to preview validation errors before submitting a bulk upload. ## Validation Categories ### Structure Errors - Header row must have **21 columns** (device-only) or **25 columns** (device + 4 SIM fields, EIQ-5996). Other counts are rejected. - Each data row must match the header column count. - Header names must match expected column names (case-insensitive). - Maximum 1000 data rows allowed. ### Required Field Errors For **Create** operations (Delete=false, Update=false): - Device Name is required - Device Unique ID is required - Account ID is required - Device Type ID is required - Heartbeat Period is required For **Update/Delete** operations: - Device Unique ID is required - Account ID is required ### Format Errors - **Heartbeat Period**: Must be an integer >= 0. Negative values are not allowed. - **Boolean fields** (Active, Enforce Secure MQTT, Delete, Update): Must be `true`, `false`, or empty. - **Metadata**: Each entry must be in format `key:value`. - **ICCID** *(SIM, 25-col only)*: Must be 18-22 digits. ### Reference Errors - Account ID must reference a valid, accessible company - Device Type ID must reference a valid device type ### Permission Errors - User must have access to all companies referenced in the CSV ## Warnings (Non-blocking) - Empty rows are detected and will be skipped during import. - *(25-col only)* SIM fields populated without an ICCID — the row will not get a SIM created for it. - [Bulk Execute Gateway Command via CSV file](https://dev.edgeiq.io/reference/post_devices_csv_bulk_upload_gateway_command.md): Bulk Execute Gateway Command via CSV file - [Revoke a device certificate](https://dev.edgeiq.io/reference/revokedevicecertificate.md) - [Activate a device certificate](https://dev.edgeiq.io/reference/activatedevicecertificate.md) - [Execute Command on a device](https://dev.edgeiq.io/reference/post_run_command_on_device_by_id-1.md): Execute Command on a device - [List Command(s) on Device](https://dev.edgeiq.io/reference/get_command_on_device_by_id.md): List Command(s) on Device - [Attach Command to Device](https://dev.edgeiq.io/reference/put_attach_command_to_device.md): Attach Command to Device - [Detach Command from Device](https://dev.edgeiq.io/reference/delete_detach_command_from_device.md): Detach Command from Device - [List Command Executions(s) on Device](https://dev.edgeiq.io/reference/get_command_executions_on_device_by_id.md): List Command Executions(s) on Device - [Get Configurations on Device](https://dev.edgeiq.io/reference/get_configurations_on_device_by_id.md): Get Configurations on Device with Last Sent and Last Reported Setting. - [Update Last Reported Setting for a Configuration on Device](https://dev.edgeiq.io/reference/post_last_reported_configuration_on_device_by_id.md): Update Last Reported Setting for a Configuration on Device - [List all Devices Events](https://dev.edgeiq.io/reference/get_devices_events.md): List all Devices Events - [Execute Gateway Command on a device](https://dev.edgeiq.io/reference/post_run_gateway_command_on_device_by_id.md): Execute Gateway Command on a device - [List Ingestor(s) on Device](https://dev.edgeiq.io/reference/get_ingestor_on_device_by_id.md): List Ingestor(s) on Device - [Attach Ingestor to Device](https://dev.edgeiq.io/reference/put_attach_ingestor_to_device.md): Attach Ingestor to Device - [Detach Ingestor from Device](https://dev.edgeiq.io/reference/delete_detach_ingestor_from_device.md): Detach Ingestor from Device - [Get latest network interface info for each interface of a device](https://dev.edgeiq.io/reference/get_device_latest_network_interface_infos.md): Returns the most recent network interface information for each interface of the specified device. - [Get latest network performance reports for each interface and server of a device](https://dev.edgeiq.io/reference/get_device_latest_network_interface_performance_reports.md): Returns the most recent network performance reports for each combination of interface and server of the specified device. - [Get latest network latency reports for each interface and host of a device](https://dev.edgeiq.io/reference/get_device_latest_network_interface_latency_reports.md): Returns the most recent network latency reports for each combination of interface and host of the specified device. - [Get consolidated network connectivity information for a device](https://dev.edgeiq.io/reference/get_device_network_connectivity.md): Returns a comprehensive view of all network connectivity data including interface info, performance metrics, and latency measurements for each interface of the device. - [Get network latency reports of the device](https://dev.edgeiq.io/reference/get_network-interface-latency-reports.md): Returns a list of network latency test reports collected on the device per network interface. - [Create a network performance report for a device interface](https://dev.edgeiq.io/reference/post_network-interface-latency-reports.md): Creates a new network performance report with speed test results for a specific network interface. - [Get network performance reports of the device](https://dev.edgeiq.io/reference/get_network-interface-performance-reports.md): Returns a list of network performance test reports collected on the device per network interface. - [Create a network performance report for a device interface](https://dev.edgeiq.io/reference/post_network-interface-performance-reports.md): Creates a new network performance report with speed test results for a specific network interface. - [Get network interfaces reports of the device](https://dev.edgeiq.io/reference/get_network-interfaces-reports.md): Returns a list of network interfaces reports collected on the device. - [Create a network interfaces report for a device](https://dev.edgeiq.io/reference/post_network-interfaces-reports.md): Creates a new network interfaces report with information about the device's network interfaces. - [Get network interface infos collected as part of a network interfaces report of the device](https://dev.edgeiq.io/reference/get_network-interface-infos.md): Returns a list of network interface infos collected as part of a network interfaces report of the device. - [Create a network interface info record](https://dev.edgeiq.io/reference/post_network-interface-infos.md): Creates a new network interface info record as part of a network interfaces report. - [List Rule(s) on Device](https://dev.edgeiq.io/reference/get_rules_on_device_by_id.md): List Rule(s) on Device - [Attach Rule to Device](https://dev.edgeiq.io/reference/put_attach_rule_to_device.md): Attach Rule to Device - [Detach Rule from Device](https://dev.edgeiq.io/reference/delete_detach_rule_from_device.md): Detach Rule from Device - [List Settings(s) on Device](https://dev.edgeiq.io/reference/get_setting_on_device_by_id.md): List Settings(s) on Device - [Attach Setting to Device](https://dev.edgeiq.io/reference/put_attach_setting_to_device.md): Attach Setting to Device - [Detach Setting from Device](https://dev.edgeiq.io/reference/delete_detach_setting_from_device.md): Detach Setting from Device - [List all Devices](https://dev.edgeiq.io/reference/get_devices.md): List all Devices - [Creates a Device](https://dev.edgeiq.io/reference/post_devices.md): Creates a Device - [Get Device by ID](https://dev.edgeiq.io/reference/get_devices_by_id.md): Get Device by ID - [Updates a Device](https://dev.edgeiq.io/reference/put_devices_by_id.md): Updates a Device - [Deletes a Device](https://dev.edgeiq.io/reference/delete_devices_by_id.md): Deletes a Device - [Get File of Device by ID](https://dev.edgeiq.io/reference/get_devices_by_id_files.md): Get Files of Device by ID - [Get AWS Thing Groups associated with a Device by ID](https://dev.edgeiq.io/reference/get_devices_by_id_aws_thing_group.md): Get AWS Thing Groups of Device by ID - [Device geographic location relation with region](https://dev.edgeiq.io/reference/get_device_region_location_relation.md): Shows geographic relationship between device's most recent known location and the given region. If the device has no last-known location, no device location observation will be attached, and `confidence_in` will be `0`. The relation will always have a `geojson` property of type `FeatureCollection` which will contain at least the `Feature` for the region. If a last known location exists for the device, the associated device location observation will be attached, and a feature will exist in the feature collection. - [N device geographic location relations with respect to geographic region](https://dev.edgeiq.io/reference/get_device_region_location_transition.md): Shows geographic relationship between device's most recent known locations and the given region. The relation will always have a `geojson` property of type `FeatureCollection` which will contain at least the `Feature` for the region. If last known locations exists for the device, the associated relations will be included, and their features will exist in the feature collection. If no known device location exists, the transition will contain data about the device and region, and the region will be included in the geojson feature collection. - [List all devices with errors](https://dev.edgeiq.io/reference/get_devices_errors.md): List all devices with errors - [List all devices within geographic bounding box](https://dev.edgeiq.io/reference/get_devices_in_bounding_box.md): List all devices with last known coordinates within the geographic bounding box described by `top_left_coordinate` and `bottom_right_coordinate`. The top left coordinate is expected to be the northwestern-most coordinate. A coordinate must be a valid WSG84 compatible latitude longitude pair in the form `,`. Valid latitudes and longitudes are parsable from the strings as floating point values, and are between -90 and 90 for latitudes and -180 and 180 for longitudes. - [List all device locations](https://dev.edgeiq.io/reference/get_devices_locations.md): List all device (non-geographic) locations, as stored in the device `location` field. - [Get counts and names of devices by status by location](https://dev.edgeiq.io/reference/get_devices_statuses_by_location.md): Get counts and names of devices by status by location - [Get counts and names of devices by status](https://dev.edgeiq.io/reference/get_devices_statues.md): Get counts and names of devices by status - [Find if a unique id exists in the system](https://dev.edgeiq.io/reference/get_device_unique_id.md): Find a device unique id in the system. If it exists, it will be returned. If none exists, a 404 will be returned. If the calling user is able to view the device, more information will be returned an a `referant` object, including the type of the device, id, and company id. - [Escrow Devices](https://dev.edgeiq.io/reference/escrow-devices.md) - [List all Escrow Devices](https://dev.edgeiq.io/reference/get_escrow_devices.md): List all Escrow Devices - [Creates an Escrow Device](https://dev.edgeiq.io/reference/post_escrow_devices.md): Creates an Escrow Device - [Get Escrow Device by ID](https://dev.edgeiq.io/reference/get_escrow_devices_by_id.md): Get Escrow Device by ID - [Updates a Escrow Device](https://dev.edgeiq.io/reference/put_escrow_devices_by_id.md): Updates a Escrow Device - [Deletes a Escrow Device](https://dev.edgeiq.io/reference/delete_escrow_devices_by_id.md): Deletes a Escrow Device - [Deletes multiple Escrow Devices](https://dev.edgeiq.io/reference/delete_escrow_devices_bulk.md): Deletes multiple Escrow Devices - [List all Fleets](https://dev.edgeiq.io/reference/get_fleets.md): List all fleets accessible to the current user. Supports pagination and filtering by various fleet attributes, including the client-facing `fleet_unique_id` (exact via `fleet_unique_id_eq`, or partial via `fleet_unique_id_like` / `fleet_unique_id_ilike`). - [Create a Fleet](https://dev.edgeiq.io/reference/post_fleets.md): Create a new fleet. Specify 'fleet_type' as 'static' for manually managed device membership, or 'dynamic' for automatic membership based on 'filter_criteria'. - [Get Fleet by ID](https://dev.edgeiq.io/reference/get_fleets_by_id.md): Retrieve a specific fleet by its ID. - [Update a Fleet](https://dev.edgeiq.io/reference/put_fleets_by_id.md): Update an existing fleet. Note that changing 'fleet_type' between static and dynamic is not allowed after creation. - [Delete a Fleet](https://dev.edgeiq.io/reference/delete_fleets_by_id.md): Delete a fleet. This performs a soft delete and does not affect the devices that were members of the fleet. - [List Available Fleet Actions](https://dev.edgeiq.io/reference/get_fleets_actions.md): List all available bulk actions that can be executed on fleet devices. Actions include issuing commands, adding tags, adding metadata, and updating heartbeat settings. - [Execute Fleet Action](https://dev.edgeiq.io/reference/post_fleets_actions.md): Execute a bulk action on all devices in the fleet. The action is processed asynchronously and a bulk_response_id is returned to track progress. For 'issue_command' and 'send_configuration' actions, only eligible devices will receive the command/setting. - [Get Fleet Analytics](https://dev.edgeiq.io/reference/get_fleets_analytics.md): Get analytics and statistics for a fleet, including device counts by status, health breakdown, and device type distribution. - [List Available Commands for Fleet](https://dev.edgeiq.io/reference/get_fleets_available_commands.md): List all commands that can be executed on the fleet's devices, including both gateway commands and user-defined commands. Each command includes counts of how many devices can and cannot run it. - [List Available Configurations for Fleet](https://dev.edgeiq.io/reference/get_fleets_available_configurations.md): List all configurations available for the fleet, including their settings and send commands. Each setting includes counts of how many devices can and cannot receive it. - [List Fleet Commands](https://dev.edgeiq.io/reference/get_fleets_commands.md): List all commands that have been attached to this fleet. These commands can be executed on fleet devices. - [Add Commands to Fleet](https://dev.edgeiq.io/reference/post_fleets_commands.md): Attach commands to a fleet. Once attached, these commands can be executed on all devices in the fleet. - [Remove Commands from Fleet](https://dev.edgeiq.io/reference/delete_fleets_commands.md): Remove commands from a fleet. The commands will no longer be associated with the fleet. - [List Fleet Configurations](https://dev.edgeiq.io/reference/get_fleets_configurations.md): List all configurations that have been associated with this fleet. These configurations can be deployed to devices within the fleet. - [Add Configurations to Fleet](https://dev.edgeiq.io/reference/post_fleets_configurations.md): Associate configurations with a fleet. Once associated, these configurations can be deployed to all devices in the fleet. - [Remove Configurations from Fleet](https://dev.edgeiq.io/reference/delete_fleets_configurations.md): Remove configuration associations from a fleet. The configurations will no longer be associated with the fleet. - [List Fleet Devices](https://dev.edgeiq.io/reference/get_fleets_devices.md): List all devices that are members of this fleet. Supports pagination and filtering by device attributes. - [Add Devices to Fleet](https://dev.edgeiq.io/reference/post_fleets_devices.md): Add devices to a static fleet. This endpoint only works for static fleets. Dynamic fleets automatically manage their membership based on filter criteria. - [Remove Devices from Fleet](https://dev.edgeiq.io/reference/delete_fleets_devices.md): Remove devices from a static fleet. This endpoint only works for static fleets. Dynamic fleets automatically manage their membership based on filter criteria. - [Import Devices to Fleet](https://dev.edgeiq.io/reference/post_fleets_devices_import.md): Bulk import devices to a static fleet from a CSV file. The CSV must have a 'device_id' or 'id' column containing valid device IDs. This endpoint only works for static fleets. - [List Fleet Events](https://dev.edgeiq.io/reference/get_fleets_events.md): List audit events for a fleet. Events track all operations performed on the fleet including creation, updates, device membership changes, and action executions. - [Export Fleet Devices](https://dev.edgeiq.io/reference/post_fleets_export.md): Export all devices in a fleet to CSV or JSON format. The export includes device details and can be customized with specific fields. - [List Fleet Rules](https://dev.edgeiq.io/reference/get_fleets_rules.md): List all rules that have been associated with this fleet. These rules apply to devices within the fleet. - [Add Rules to Fleet](https://dev.edgeiq.io/reference/post_fleets_rules.md): Associate rules with a fleet. Once associated, these rules will apply to all devices in the fleet. - [Remove Rules from Fleet](https://dev.edgeiq.io/reference/delete_fleets_rules.md): Remove rule associations from a fleet. The rules will no longer apply to the fleet's devices. - [List Scheduled Jobs associated with a Fleet](https://dev.edgeiq.io/reference/get_fleet_scheduled_jobs.md): List all scheduled jobs that have been attached to this fleet. - [Add Scheduled Jobs to Fleet](https://dev.edgeiq.io/reference/post_fleet_scheduled_jobs.md): Attach scheduled jobs to a fleet. Once attached, the scheduled jobs will be associated with this fleet and may trigger fleet actions on their configured schedule. Company constraint: from the fleet side, a scheduled job may only be attached to a fleet in the **same company**. Attempting to attach a job that belongs to a different company (including a parent or child company) is rejected with `403`. To attach a parent-company job to descendant-company fleets, use the scheduled-job side (`PUT /scheduled_jobs/{id}/fleets/bulk`). - [Remove Scheduled Jobs from Fleet](https://dev.edgeiq.io/reference/delete_fleet_scheduled_jobs.md): Detach scheduled jobs from a fleet. The scheduled jobs will no longer be associated with the fleet. - [Gateway Commands](https://dev.edgeiq.io/reference/gateway-commands.md) - [List all Gateway Commands visible to the authorized user.](https://dev.edgeiq.io/reference/get_gateway_commands.md): List all Gateway Commands visible to the authorized user. - [Creates a Gateway Command](https://dev.edgeiq.io/reference/post_gateway_commands.md): Creates a Gateway Command and sends it to one or more devices. - [Get Gateway Command by ID](https://dev.edgeiq.io/reference/get_gateway_commands_by_id.md): Get Gateway Command by ID - [Updates a Gateway Command](https://dev.edgeiq.io/reference/put_gateway_commands_by_id.md): Updates a Gateway Command - [Deletes a Gateway Command](https://dev.edgeiq.io/reference/delete_gateway_commands_by_id.md): Deletes a Gateway Command - [Retry a gateway command](https://dev.edgeiq.io/reference/put_retry_gateway_command.md): Retrying a gateway command has the same effect as executing a gateway command, but the status for the device is set to "retry" until updated by further responses. If the gateway command is executed via a command, more command execution statuses will likely be created. - [Creates multiple Gateway Commands](https://dev.edgeiq.io/reference/post_gateway_commands_bulk.md): Creates multiple Gateway Commands - [Deletes multiple Gateway Commands](https://dev.edgeiq.io/reference/delete_gateway_commands_bulk.md): Deletes multiple Gateway Commands - [Ingestors](https://dev.edgeiq.io/reference/ingestors.md) - [List all Ingestors](https://dev.edgeiq.io/reference/get_ingestors.md): List all Ingestors - [Creates a Ingestor](https://dev.edgeiq.io/reference/post_ingestors.md): Ingestors are used to classify ingestors, which represent specific, addressable instances of that class of ingestor. - [Get Ingestor by ID](https://dev.edgeiq.io/reference/get_ingestors_by_id.md): Get Ingestor by ID - [Updates an Ingestor](https://dev.edgeiq.io/reference/put_ingestors_by_id.md): Updates an Ingestor - [Deletes an Ingestor](https://dev.edgeiq.io/reference/delete_ingestors_by_id.md): Deletes an Ingestor - [Deletes multiple Ingestors](https://dev.edgeiq.io/reference/delete_ingestors_bulk.md): Deletes multiple Ingestors - [Integrations](https://dev.edgeiq.io/reference/integrations.md) - [List all Integrations](https://dev.edgeiq.io/reference/get_integrations.md): List all Integrations - [Creates an Integration](https://dev.edgeiq.io/reference/post_integrations.md): Integrations are used to classify devices, which represent specific, addressable instances of that class of device. - [Get Integration by ID](https://dev.edgeiq.io/reference/get_integrations_by_id.md): Get Integration by ID - [Updates an Integration](https://dev.edgeiq.io/reference/put_integrations_by_id.md): Updates an Integration - [Deletes an Integration](https://dev.edgeiq.io/reference/delete_integrations_by_id.md): Deletes an Integration - [Get AWS Thing Groups associated with an Integration by ID](https://dev.edgeiq.io/reference/get_integrations_by_id_aws_thing_group.md): Get AWS Thing Groups for Integration by ID - [Deletes multiple Integrations](https://dev.edgeiq.io/reference/delete_integrations_bulk.md): Deletes multiple Integrations - [Reports](https://dev.edgeiq.io/reference/reports.md) - [List all Hearbeat Reports](https://dev.edgeiq.io/reference/get_heartbeats.md): List all Hearbeat Reports - [List all Reports](https://dev.edgeiq.io/reference/get_reports.md): List all Reports - [Creates a Report](https://dev.edgeiq.io/reference/post_reports.md): Reports are generally received from devices posting reports through EdgeIQ edge. However, in order to test, for instance, you are allowed to post reports through the API, using a valid device ID. - [Get Report by ID](https://dev.edgeiq.io/reference/get_report_by_id.md): Get Report by ID - [Rules](https://dev.edgeiq.io/reference/rules.md) - [List all Rules](https://dev.edgeiq.io/reference/get_rules.md): List all Rules - [Get Rule by ID](https://dev.edgeiq.io/reference/get_rules_by_id.md): Get Rule by ID - [Get devices for a rule](https://dev.edgeiq.io/reference/get_devices_for_rule_by_id.md): Get devices for a rule - [Creates a Rule](https://dev.edgeiq.io/reference/post_rules.md): Rules are used to classify rules, which represent specific, addressable instances of that class of rule. - [Updates a Rule](https://dev.edgeiq.io/reference/put_rules_by_id.md): Updates a Rule - [Deletes a Rule](https://dev.edgeiq.io/reference/delete_rules_by_id.md): Deletes a Rule - [Deletes multiple Rules](https://dev.edgeiq.io/reference/delete_rules_bulk.md): Deletes multiple Rules - [Lists available rule conditions](https://dev.edgeiq.io/reference/get_rule_conditions.md): Lists available rule conditions - [Lists available rule actions](https://dev.edgeiq.io/reference/get_rule_actions.md): Lists available rule actions - [List all SIMs](https://dev.edgeiq.io/reference/get_sims.md): Returns a paginated list of SIM records accessible to the current user. Supports filtering by ICCID (exact via `iccid_eq`, or partial via `iccid_like` / `iccid_ilike`), MSISDN, device, integration, status, and boolean flags. Pass `page_meta=true` to receive a paginated envelope (`{ resources, page, per_page, total }`); omit it to receive a plain array. - [Create a SIM](https://dev.edgeiq.io/reference/post_sims.md): Creates a new SIM record and links it to the specified device. The `device_id` and `iccid` fields are required. The SIM inherits its `company_id` from the linked device's company, so the calling user must have create permissions for that company. A given ICCID must be globally unique across the platform. - [Get a SIM by ID or ICCID](https://dev.edgeiq.io/reference/get_sims_by_id.md): Returns a single SIM record. The `{id}` path parameter accepts either: - **System ID**: the platform-assigned 24-character alphanumeric identifier (e.g. `5f1b2c3d4e5f6a7b8c9d0e1f`). - **ICCID**: an all-digit 18–22 character Integrated Circuit Card Identifier (e.g. `8901260123456789012`). The server detects an all-digit value in the 18–22 character length range as an ICCID and performs a lookup by ICCID instead of by system ID. The same company-scoped permission check applies in both cases; a SIM the caller cannot access returns 404 (not 403) to avoid leaking existence. - [Update a SIM](https://dev.edgeiq.io/reference/put_sims_by_id.md): Updates an existing SIM record identified by its system ID. The request body is merged onto the stored record (JSON merge). Read-only server fields (`company_id`, usage counters, flags, audit timestamps) are ignored if present in the request body. `iccid` changes must still pass uniqueness validation. - [Delete a SIM](https://dev.edgeiq.io/reference/delete_sims_by_id.md): Permanently deletes the SIM record with the given system ID. - [Get distinct SIM field values](https://dev.edgeiq.io/reference/get_sims_distinct.md): Returns a sorted list of distinct non-empty values for a single SIM column, scoped to the companies accessible to the authenticated user. Used to populate autocomplete dropdowns in the SIM filter panel (Rate Plan, Communication Plan, SIM Status). - [Deletes associated device types from a Scheduled Job](https://dev.edgeiq.io/reference/delete_device_types_from_scheduled_job_by_id.md): Deletes associated device types from a Scheduled Job - [Associates bulk device types to a Scheduled Job](https://dev.edgeiq.io/reference/put_device_types_to_scheduled_job_by_id.md): Associates bulk device types to a Scheduled Job - [Deletes associated devices from a Scheduled Job](https://dev.edgeiq.io/reference/delete_devices_from_scheduled_job_by_id.md): Deletes associated devices from a Scheduled Job - [List all Scheduled Jobs](https://dev.edgeiq.io/reference/get_scheduled_jobs.md): List all Scheduled Jobs - [Creates a Scheduled Job](https://dev.edgeiq.io/reference/post_scheduled_jobs.md): Creates a Scheduled Job - [Get Scheduled Job by ID](https://dev.edgeiq.io/reference/get_scheduled_job_by_id.md): Get Scheduled Job by ID - [Updates a Scheduled Job](https://dev.edgeiq.io/reference/put_scheduled_job_by_id.md): Updates a Scheduled Job - [Deletes a Scheduled Job](https://dev.edgeiq.io/reference/delete_scheduled_job_by_id.md): Deletes a Scheduled Job - [List all Devices associated with a Scheduled Job](https://dev.edgeiq.io/reference/get_devices_for_scheduled_job.md): List all Devices associated with a Scheduled Job - [Associates bulk devices to a Scheduled Job](https://dev.edgeiq.io/reference/put_devices_to_scheduled_job_by_id.md): Associates bulk devices to a Scheduled Job - [Associates a device to a Scheduled Job](https://dev.edgeiq.io/reference/put_device_to_scheduled_job_by_id.md): Associates a device to a Scheduled Job - [Deletes associate device from a Scheduled Job](https://dev.edgeiq.io/reference/delete_device_from_scheduled_job_by_id.md): Deletes associate device from a Scheduled Job - [List all Device Types associated with a Scheduled Job](https://dev.edgeiq.io/reference/get_device_types_for_scheduled_job.md): List all Device Types associated with a Scheduled Job - [Associates a device to a Scheduled Job](https://dev.edgeiq.io/reference/put_device_type_to_scheduled_job_by_id.md): Associates a device to a Scheduled Job - [Deletes associate device type from a Scheduled Job](https://dev.edgeiq.io/reference/delete_device_type_from_scheduled_job_by_id.md): Deletes associate device type from a Scheduled Job - [List Fleets associated with a Scheduled Job](https://dev.edgeiq.io/reference/get_fleets_for_scheduled_job.md): List all fleets that have been attached to this scheduled job. - [Bulk attach Fleets to a Scheduled Job](https://dev.edgeiq.io/reference/put_fleets_to_scheduled_job_bulk.md): Attach multiple fleets to a scheduled job in a single request. Company constraint: each fleet must belong to the scheduled job's own company or a descendant company within the caller's hierarchy (parent → child). A fleet outside the job's company subtree is rejected with `403`. - [Bulk detach Fleets from a Scheduled Job](https://dev.edgeiq.io/reference/delete_fleets_from_scheduled_job_bulk.md): Detach multiple fleets from a scheduled job in a single request. - [Attach a Fleet to a Scheduled Job](https://dev.edgeiq.io/reference/put_fleet_to_scheduled_job.md): Attach a single fleet to a scheduled job. Company constraint: the fleet must belong to the scheduled job's own company or a descendant company within the caller's hierarchy (parent → child). A fleet outside the job's company subtree is rejected with `403`. - [Detach a Fleet from a Scheduled Job](https://dev.edgeiq.io/reference/delete_fleet_from_scheduled_job.md): Detach a single fleet from a scheduled job. - [Software Updates](https://dev.edgeiq.io/reference/software-updates.md) - [List all Software Updates visible to the authorized user.](https://dev.edgeiq.io/reference/get_software_updates.md): List all Software Updates visible to the authorized user. - [Creates a Software Update](https://dev.edgeiq.io/reference/post_software_updates.md): Creates a Software Update used to send outbound command data to one or more devices. - [Get Software Update by ID](https://dev.edgeiq.io/reference/get_software_updates_by_id.md): Get Software Update by ID - [Updates a Software Update](https://dev.edgeiq.io/reference/put_software_updates_by_id.md): Updates a Software Update - [Deletes a Software Update](https://dev.edgeiq.io/reference/delete_software_updates_by_id.md): Deletes a Software Update - [Add files to software update.](https://dev.edgeiq.io/reference/post_software_updates_files.md): Adds files to a software update. Please note that the files must have a **Content-Type**. - [Deletes multiple Software Updates](https://dev.edgeiq.io/reference/delete_software_updates_bulk.md): Deletes multiple Software Updates - [Query Generic Time Series Data](https://dev.edgeiq.io/reference/get_timeseries-table.md): Fetches time-bucketed data from a specified table, allowing for dynamic aggregations, filtering, and pivoting. This powerful and flexible endpoint can be used to generate data for charts and dashboards. It supports a wide range of aggregation functions, including percentiles and histograms. **Key Features:** - **Dynamic Metrics & Aggregations:** Specify multiple columns and aggregation functions. - **Pivoting:** Create pivot-table-like results using the `pivot_on` parameter. - **Advanced Aggregations:** Includes `count`, `sum`, `avg`, `min`, `max`, `stddev`, `variance`, `median`, percentiles (`p50`, `p99.9`), and `histogram`. - **Time Bucketing:** Group data into intervals (e.g., `1 hour`, `1 day`). The API ensures a continuous time series by filling gaps with `null` or `0` values. - **Filtering:** Apply standard filters on columns. Supported operators include `$eq`, `$ne`, `$gt`, `$gte`, `$lt`, `$lte`, `$like`, and `$in`. - **Result Limiting:** The API returns a maximum of 10,000 time buckets per request. - [Translators](https://dev.edgeiq.io/reference/translators.md) - [List all Translators](https://dev.edgeiq.io/reference/get_translators.md): List all Translators - [Creates a Translator](https://dev.edgeiq.io/reference/post_translators.md): Translators are used to classify translators, which represent specific, addressable instances of that class of translator. - [Get Translator by ID](https://dev.edgeiq.io/reference/get_translators_by_id.md): Get Translator by ID - [Updates a Translator](https://dev.edgeiq.io/reference/put_translators_by_id.md): Updates a Translator - [Deletes a Translator](https://dev.edgeiq.io/reference/delete_translators_by_id.md): Deletes a Translator - [Deletes multiple Translators](https://dev.edgeiq.io/reference/delete_translators_bulk.md): Deletes multiple Translators - [User Types](https://dev.edgeiq.io/reference/user-types.md) - [List all User Types](https://dev.edgeiq.io/reference/get_user_types.md): List all User Types - [Creates a User Type](https://dev.edgeiq.io/reference/post_user_types.md): Creates a new customer account, attached as a sub-account to the currently authenticated user's company - [Get User Type by ID](https://dev.edgeiq.io/reference/get_user_types_by_id.md): Get User Type by ID - [Updates a User Type](https://dev.edgeiq.io/reference/put_user_types_by_id.md): Updates a User Type - [Deletes a User Type](https://dev.edgeiq.io/reference/delete_user_types_by_id.md): Deletes a User Type - [Users](https://dev.edgeiq.io/reference/users.md) - [List all Users](https://dev.edgeiq.io/reference/get_users.md): List all Users - [Creates a User](https://dev.edgeiq.io/reference/post_users.md): Users describe the accounts of users of the system. - [Get User by ID](https://dev.edgeiq.io/reference/get_users_by_id.md): Get User by ID - [Updates a User](https://dev.edgeiq.io/reference/put_users_by_id.md): Updates a User - [Deletes a User](https://dev.edgeiq.io/reference/delete_users_by_id.md): Deletes a User - [Deletes multiple Users](https://dev.edgeiq.io/reference/delete_users_bulk.md): Deletes multiple Users - [Returns current user](https://dev.edgeiq.io/reference/get_users_bulk.md): Returns current user - [List all Notifications](https://dev.edgeiq.io/reference/get_notifications.md): List all Notifications - [Create a Notification](https://dev.edgeiq.io/reference/post_notifications.md): Create a Notification - [Get a Notification](https://dev.edgeiq.io/reference/get_notifications_id.md): Get a single notification by ID - [Update a Notification](https://dev.edgeiq.io/reference/put_notifications_id.md): Update an existing notification by ID - [List the current user's notification watches](https://dev.edgeiq.io/reference/get_user_notification_watches.md): Returns all notification watches owned by the authenticated user. Results are same-user scoped — a user can only see their own watches. - [Create a notification watch](https://dev.edgeiq.io/reference/post_user_notification_watches.md): Creates a watch for the authenticated user on a specific device or fleet. The server sets company_id and user_id from the authenticated session. Returns 403 if the user does not have read access to the target entity. - [Delete a notification watch](https://dev.edgeiq.io/reference/delete_user_notification_watch_by_id.md): Deletes one of the authenticated user's notification watches. Returns 403 if the watch does not exist or is not owned by the current user. - [List the current user's notification inbox](https://dev.edgeiq.io/reference/get_user_notification_inbox.md): Returns all inbox items (NotificationView) for the authenticated user. Results are same-user scoped — a user can only see their own inbox items. - [Get the current user's inbox summary](https://dev.edgeiq.io/reference/get_user_notification_inbox_summary.md): Returns a count of inbox items and the timestamp of the most recent item for the authenticated user. - [Dismiss an inbox item](https://dev.edgeiq.io/reference/delete_user_notification_inbox_by_id.md): Dismisses (deletes) one inbox item for the authenticated user. The path parameter is the notification_id of the inbox item. Only the inbox row is removed; the underlying Notification record is not affected. Returns 403 if the item does not exist or is not owned by the current user. - [Get MQTT configuration](https://dev.edgeiq.io/reference/get_v1_bootstrap.md): Retrieve MQTT broker and platform configuration for a Coda device. This endpoint is called by devices before connecting to MQTT to discover their broker endpoint and platform URL. The response format matches the device's conf.json structure for key-based merge. Configuration is looked up in the following priority order: 1. Exact match: company_id + device_unique_id 2. Pattern match: company_id + glob patterns (e.g., "edgeiq-coda-staging-*") 3. Company default: company_id + "default" 4. Global default: "default" + "global-config" - [List all User Events](https://dev.edgeiq.io/reference/get_user_events.md): List all User Events visible to the authorized user. - [Get User Event by ID](https://dev.edgeiq.io/reference/get_user_events_by_id.md): Get User Event by ID - [Get bulk responses](https://dev.edgeiq.io/reference/get_bulk_responses.md): Get a list of bulk responses. - [Get bulk responses](https://dev.edgeiq.io/reference/get_bulk_response_by_id.md): Get a bulk response by ID. - [List all Certificate Revocation Lists visible to the authorized user.](https://dev.edgeiq.io/reference/get_certificate_revocation_lists.md): List all Certificate Revocation Lists visible to the authorized user. - [Creates a Certificate Revocation List](https://dev.edgeiq.io/reference/post_certificate_revocation_lists.md): Creates a Certificate Revocation List for a specific company. There can be only one CRL per company, so updates need to contain all revoked certificates. - [Updates a Certificate Revocation List](https://dev.edgeiq.io/reference/put_certificate_revocation_lists.md): Updates a Certificate Revocation List - [Get Certificate Revocation List by ID](https://dev.edgeiq.io/reference/get_certificate_revocation_lists_by_id.md): Get Certificate Revocation List by ID - [Deletes a Certificate Revocation List](https://dev.edgeiq.io/reference/delete_certificate_revocation_lists_by_id.md): Deletes a Certificate Revocation List - [Link Command to a Configuration](https://dev.edgeiq.io/reference/put_command_to_configuration.md): Link Command to a Configuration - [List all Configurations](https://dev.edgeiq.io/reference/get_configurations.md): List all Configurations visible to the authorized user. - [Creates a Configuration](https://dev.edgeiq.io/reference/post_configuration_updates.md): Creates a Configuration. - [Get Configuration by ID](https://dev.edgeiq.io/reference/get_configurations_by_id.md): Get Configuration by ID - [Updates a Configuration](https://dev.edgeiq.io/reference/put_configurations_by_id.md): Updates a Configuration - [Deletes a Configuration](https://dev.edgeiq.io/reference/delete_configurations_by_id.md): Deletes a Configuration - [Get Device Types associated with a Configuration](https://dev.edgeiq.io/reference/get_device_types_associated_with_configuration_id.md): Get Device Types associated with a Configuration - [Get Commands associated with a Configuration](https://dev.edgeiq.io/reference/get_commands_associated_with_configuration_id.md): Get Commands associated with a Configuration - [Link Command to a Configuration](https://dev.edgeiq.io/reference/put_configuration_to_command.md): Link Command to a Configuration - [Get Settings associated with a Configuration](https://dev.edgeiq.io/reference/get_settings_associated_with_configuration_id.md): Get Settings associated with a Configuration - [Creates a Setting within a Configuration](https://dev.edgeiq.io/reference/post_create_setting_for_configuration.md): Creates a Setting within a Configuration - [List Settings Versions for a Setting](https://dev.edgeiq.io/reference/get_setting_versions_for_setting_id.md): List Settings Versions for a Setting - [Creates a new version of a setting](https://dev.edgeiq.io/reference/post_create_setting_version.md): Creates a new version of a setting - [Get Settings Version by Settings ID and Version](https://dev.edgeiq.io/reference/get_setting_versions_by_id_and_version.md): Get Settings Version by Settings ID and Version - [Update a Setting Version](https://dev.edgeiq.io/reference/put_update_setting_version.md): Update a Setting Version - [Delete a Setting Version](https://dev.edgeiq.io/reference/delete_setting_version_by_id.md): Delete a Setting Version - [List all CommandExecutions visible to the authorized user.](https://dev.edgeiq.io/reference/get_command_executions.md): List all CommandExecutions visible to the authorized user. - [List all Command Executions Statuses by command execution id.](https://dev.edgeiq.io/reference/get_command_executions_on_command_execution_statuses_by_id.md): List all Command Executions Statuses by command execution id. - [Retry the command associated with this command execution](https://dev.edgeiq.io/reference/put_retry_command_execution_command.md): Given a command execution, "retry", or re-execute the related command. This is the same as executing the command in the first place, but a 'retry' execution status will be created, and further executions statuses will be added to this command execution's status list - [Creates a Setting.](https://dev.edgeiq.io/reference/post_settings.md): Creates a Setting. - [Get Devices associated with a Setting](https://dev.edgeiq.io/reference/get_devices_associated_with_settings_id.md): Get Devices associated with a Setting - [Get Device Types associated with a Setting](https://dev.edgeiq.io/reference/get_device_types_associated_with_settings_id.md): Get Device Types associated with a Setting - [Deletes a Setting](https://dev.edgeiq.io/reference/delete_settings_by_id.md): Deletes a Setting - [Get Settings by ID](https://dev.edgeiq.io/reference/get_settings_by_id.md): Get Settings by ID - [List all Settings](https://dev.edgeiq.io/reference/get_settings.md): List all Settings visible to the authorized user. - [Updates a Setting](https://dev.edgeiq.io/reference/put_settings_by_id.md): Updates a Setting - [List all Files](https://dev.edgeiq.io/reference/get_files.md): List all Files - [Creates a File](https://dev.edgeiq.io/reference/post_files.md): Creates a File - [Get File by ID](https://dev.edgeiq.io/reference/get_files_by_id.md): Get File by ID - [Updates a File](https://dev.edgeiq.io/reference/put_files_by_id.md): Updates a File - [Uploads a file to specific file id.](https://dev.edgeiq.io/reference/post_files_by_id_upload.md): Uploads a file to specific file id. The 'mime-type' and the 'size' will be detected and updated. - [Deletes a File](https://dev.edgeiq.io/reference/delete_files_by_id.md): Deletes a File - [Download File by ID](https://dev.edgeiq.io/reference/get_files_by_id_download.md): Download File by ID - [Create a device heartbeat](https://dev.edgeiq.io/reference/post_heartbeats.md): Creates a heartbeat record for a device to track its online/offline status - [Retrieves Company Logo](https://dev.edgeiq.io/reference/get_company_logo.md): Retrieves Company Logo - [List all Pollable Attributes visible to the authorized user.](https://dev.edgeiq.io/reference/get_pollable_attributes.md): List all Pollable Attributes visible to the authorized user. - [Creates a Pollable Attribute](https://dev.edgeiq.io/reference/post_pollable_attributes.md): Creates a Pollable Attribute definition used by a polling ingestor. - [Get Pollable Attribute by ID](https://dev.edgeiq.io/reference/get_pollable_attributes_by_id.md): Get Pollable Attribute by ID - [Updates a Pollable Attribute](https://dev.edgeiq.io/reference/put_pollable_attributes_by_id.md): Updates a Pollable Attribute - [Deletes a Pollable Attribute](https://dev.edgeiq.io/reference/delete_pollable_attributes_by_id.md): Deletes a Pollable Attribute - [List all Regions](https://dev.edgeiq.io/reference/get_regions.md): List all geographic regions - [Creates a Region](https://dev.edgeiq.io/reference/post_regions.md): Create a geographic region - [Get Region by ID](https://dev.edgeiq.io/reference/get_region_by_id.md): Get Region by ID - [Deletes a Region](https://dev.edgeiq.io/reference/delete_region_by_id.md): Deletes a Region - [List all Secrets visible to the authorized user.](https://dev.edgeiq.io/reference/get_secrets.md): List all Secrets visible to the authorized user. - [Creates a Secret](https://dev.edgeiq.io/reference/post_secrets.md): Creates a Secret used to securely store sensitive data. - [Get Secret by ID](https://dev.edgeiq.io/reference/get_secret_by_id.md): Get Secret by ID - [Deletes a Secret](https://dev.edgeiq.io/reference/delete_secret_by_id.md): Deletes a Secret - [Historical list all Settings applied which are visible to the authorized user.](https://dev.edgeiq.io/reference/get_settings_application_record.md): Historical list all Settings applied which are visible to the authorized user. - [List all Software Version visible to the authorized user.](https://dev.edgeiq.io/reference/get_software_versions.md): List all Software Version visible to the authorized user. - [Creates a Software Version](https://dev.edgeiq.io/reference/post_software_versions.md): Creates a Software Version used to send outbound command data to one or more devices. - [Get Software Version by ID](https://dev.edgeiq.io/reference/get_software_versions_by_id.md): Get Software Version by ID - [Updates a Software Version](https://dev.edgeiq.io/reference/put_software_version_by_id.md): Updates a Software Version - [Deletes a Software Version](https://dev.edgeiq.io/reference/delete_software_versions_by_id.md): Deletes a Software Version - [Get distinct software versions based on name](https://dev.edgeiq.io/reference/get_software_versions_distinct.md): Returns a list of distinct software versions filtered by various parameters. This is useful for getting unique package names across devices. ## Changelog - [Coda - 4.1.33](https://dev.edgeiq.io/changelog/coda-4133.md) - [Coda - 4.1.27](https://dev.edgeiq.io/changelog/coda-4120.md) - [Coda - 4.1.15](https://dev.edgeiq.io/changelog/coda-4115.md) - [Coda - 4.1.13](https://dev.edgeiq.io/changelog/coda-417.md) - [Coda - 4.1.4](https://dev.edgeiq.io/changelog/coda-414.md) - [Coda - 4.1.2](https://dev.edgeiq.io/changelog/coda-412.md) - [Coda (Edge Local Service) - 4.1.0](https://dev.edgeiq.io/changelog/coda-edge-local-service-410.md) - [Coda (Edge Local Service) - 4.0.22](https://dev.edgeiq.io/changelog/coda-edge-local-service-4022.md) - [Coda (Edge Local Service) - 4.0.0](https://dev.edgeiq.io/changelog/coda-edge-local-service.md) - [Edge Local Service - 3.2.7](https://dev.edgeiq.io/changelog/edge-local-service-327.md)