{
  "swagger": "2.0",
  "info": {
    "title": "MQcentral API",
    "version": "v1"
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/v1/account": {
      "get": {
        "summary": "Retrieves the current user's account info",
        "description": "Retrieves user and subscriber information for the currently authenticated user.",
        "operationId": "Account_GetAccount",
        "responses": {
          "200": {
            "description": "User and subscriber account information for the authenticated user.",
            "schema": {
              "$ref": "#/definitions/apiAccountResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/account/passwordReset": {
      "put": {
        "summary": "Changes the current user's password",
        "description": "Changes the password for the currently authenticated user. Requires the current password for verification. The new password must be at least 12 characters long and include at least 3 of the following 4 character types: lowercase letter, uppercase letter, number, or special character (such as !@#$%^&*). The new password cannot match any password in the user's password history.",
        "operationId": "Account_PasswordReset",
        "responses": {
          "200": {
            "description": "Indicates whether the password was changed successfully.",
            "schema": {
              "$ref": "#/definitions/apiAccountError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiAccountPasswordReset"
            }
          }
        ],
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/account/patchUserInfo": {
      "patch": {
        "summary": "Partially updates the current user's info",
        "description": "Updates only the fields provided in the request body for the currently authenticated user. Omitted fields remain unchanged.",
        "operationId": "Account_PatchUserInfo",
        "responses": {
          "200": {
            "description": "Indicates whether the user info was patched successfully.",
            "schema": {
              "$ref": "#/definitions/apiAccountError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiUserInfoPatch"
            }
          }
        ],
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/account/permissions": {
      "get": {
        "summary": "Retrieves the current user's permissions",
        "description": "Retrieves the full permission set for the currently authenticated user.",
        "operationId": "Account_GetPermissions",
        "responses": {
          "200": {
            "description": "CRUD permission flags for each resource type accessible to the authenticated user.",
            "schema": {
              "$ref": "#/definitions/apiAccountPermissionResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/account/updateUserInfo": {
      "put": {
        "summary": "Replaces the current user's info",
        "description": "Replaces all user information fields for the currently authenticated user. All required fields must be provided; omitting a field resets it to its default value.",
        "operationId": "Account_UpdateUserInfo",
        "responses": {
          "200": {
            "description": "Indicates whether the user info was updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiAccountError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiUserInfoUpdate"
            }
          }
        ],
        "tags": [
          "Account"
        ]
      }
    },
    "/v1/applications": {
      "get": {
        "summary": "Lists all applications",
        "description": "Retrieves all applications belonging to the authenticated account.",
        "operationId": "Application_GetApplications",
        "responses": {
          "200": {
            "description": "A list of application objects.",
            "schema": {
              "$ref": "#/definitions/apiApplicationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Application"
        ]
      },
      "post": {
        "summary": "Creates a new application",
        "description": "Creates a new application and returns its credentials. The client secret is only returned once and cannot be retrieved again.",
        "operationId": "Application_CreateApplication",
        "responses": {
          "200": {
            "description": "The created application object, including its ID, name, UUID (client ID), and client secret. The client secret is only displayed once.",
            "schema": {
              "$ref": "#/definitions/apiApplicationCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiApplicationCreate"
            }
          }
        ],
        "tags": [
          "Application"
        ]
      }
    },
    "/v1/applications/{Id}": {
      "get": {
        "summary": "Retrieves an application by ID",
        "description": "Retrieves a single application by its unique identifier.",
        "operationId": "Application_GetApplication",
        "responses": {
          "200": {
            "description": "The application object for the given ID.",
            "schema": {
              "$ref": "#/definitions/apiApplicationInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the application.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Application"
        ]
      },
      "delete": {
        "summary": "Deletes an application by ID",
        "description": "Permanently deletes an application by ID. This action is irreversible.",
        "operationId": "Application_DeleteApplication",
        "responses": {
          "200": {
            "description": "A success indicator object.",
            "schema": {
              "$ref": "#/definitions/apiApplicationError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the application.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Application"
        ]
      },
      "put": {
        "summary": "Replaces an application by ID",
        "description": "Replaces all fields of an existing application by ID. The UUID (client ID) cannot be changed.",
        "operationId": "Application_UpdateApplication",
        "responses": {
          "200": {
            "description": "A success indicator object.",
            "schema": {
              "$ref": "#/definitions/apiApplicationError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the application. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiApplicationUpdate"
            }
          }
        ],
        "tags": [
          "Application"
        ]
      },
      "patch": {
        "summary": "Partially updates an application by ID",
        "description": "Partially updates an existing application by ID. Only provided fields are modified. The UUID (client ID) cannot be changed.",
        "operationId": "Application_PatchApplication",
        "responses": {
          "200": {
            "description": "A success indicator object.",
            "schema": {
              "$ref": "#/definitions/apiApplicationError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the application. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiApplicationPatch"
            }
          }
        ],
        "tags": [
          "Application"
        ]
      }
    },
    "/v1/applications/{Id}/refreshToken": {
      "post": {
        "summary": "Refreshes the client secret for an application by ID",
        "description": "Generates a new client secret for the application identified by ID. The previous client secret is permanently invalidated and any integrations using it will stop working.",
        "operationId": "Application_RefreshApplication",
        "responses": {
          "200": {
            "description": "The newly generated client secret for the application. Displayed only once.",
            "schema": {
              "$ref": "#/definitions/apiRefreshApplicationResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the application.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiApplicationFilter"
            }
          }
        ],
        "tags": [
          "Application"
        ]
      }
    },
    "/v1/decodertypes": {
      "get": {
        "summary": "Lists all decoder types",
        "description": "Retrieves all available decoder types.",
        "operationId": "DecoderType_GetDecoderTypes",
        "responses": {
          "200": {
            "description": "List of all available decoder types.",
            "schema": {
              "$ref": "#/definitions/apiDecoderTypeResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "DecoderType"
        ]
      }
    },
    "/v1/decodertypes/{Id}": {
      "get": {
        "summary": "Retrieves a decoder type by ID",
        "description": "Retrieves a single decoder type by its unique identifier.",
        "operationId": "DecoderType_GetDecoderType",
        "responses": {
          "200": {
            "description": "A decoder type defining the method used to decode device payloads.",
            "schema": {
              "$ref": "#/definitions/apiDecoderTypeInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the decoder type.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "DecoderType"
        ]
      }
    },
    "/v1/devices": {
      "get": {
        "summary": "Lists all devices",
        "description": "Retrieves all devices associated with the authenticated account.",
        "operationId": "Device_GetDevices",
        "responses": {
          "200": {
            "description": "List of all devices for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/apiDeviceResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Device"
        ]
      },
      "post": {
        "summary": "Creates a new device",
        "description": "Creates a new device. Requires the IDs for Service Profile and Device Profile. Decoder Type and Output Profile are optional. ActivationType must be either OTAA or ABP.",
        "operationId": "Device_CreateDevice",
        "responses": {
          "200": {
            "description": "Unique identifier of the created device.",
            "schema": {
              "$ref": "#/definitions/apiDeviceCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDeviceCreate"
            }
          }
        ],
        "tags": [
          "Device"
        ]
      }
    },
    "/v1/devices/health": {
      "get": {
        "summary": "Lists all devices grouped by health status",
        "description": "Retrieves all devices grouped by health status: good, fair, poor, and offline.",
        "operationId": "Device_GetDevicesByHealth",
        "responses": {
          "200": {
            "description": "All devices grouped by health status: good, fair, poor, and offline.",
            "schema": {
              "$ref": "#/definitions/apiDevicesHealthResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Device"
        ]
      }
    },
    "/v1/devices/healthcount": {
      "get": {
        "summary": "Retrieves device counts grouped by health status",
        "description": "Retrieves the count of devices grouped by health status: good, fair, poor, and offline.",
        "operationId": "Device_GetDevicesCountByHealth",
        "responses": {
          "200": {
            "description": "Device counts grouped by health status: good, fair, poor, and offline.",
            "schema": {
              "$ref": "#/definitions/apiDevicesHealthCountResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Device"
        ]
      }
    },
    "/v1/devices/{DevEUI}": {
      "get": {
        "summary": "Retrieves a device by DevEUI",
        "description": "Retrieves a single device by DevEUI, including its connectivity parameters, output profile, and latest health statistics.",
        "operationId": "Device_GetDevice",
        "responses": {
          "200": {
            "description": "A device with its configuration, connectivity parameters, and health statistics.",
            "schema": {
              "$ref": "#/definitions/apiDeviceInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "DevEUI",
            "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Device"
        ]
      },
      "delete": {
        "summary": "Deletes a device by DevEUI",
        "description": "Permanently deletes a device by DevEUI. This action is irreversible.",
        "operationId": "Device_DeleteDevice",
        "responses": {
          "200": {
            "description": "Indicates whether the device was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeviceError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "DevEUI",
            "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Device"
        ]
      },
      "put": {
        "summary": "Replaces a device by DevEUI",
        "description": "Replaces all fields of an existing device by DevEUI. Security keys cannot be changed.",
        "operationId": "Device_UpdateDevice",
        "responses": {
          "200": {
            "description": "Indicates whether the device was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeviceError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "DevEUI",
            "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDeviceUpdate"
            }
          }
        ],
        "tags": [
          "Device"
        ]
      },
      "patch": {
        "summary": "Partially updates a device by DevEUI",
        "description": "Partially updates an existing device by DevEUI. Only provided fields are modified. Security keys cannot be changed.",
        "operationId": "Device_PatchDevice",
        "responses": {
          "200": {
            "description": "Indicates whether the device was partially updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeviceError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "DevEUI",
            "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDevicePatch"
            }
          }
        ],
        "tags": [
          "Device"
        ]
      }
    },
    "/v1/devices/{DevEUI}/message": {
      "post": {
        "summary": "Sends a downstream message to a device by DevEUI",
        "description": "Sends a downstream message to a device by DevEUI. Either Payload or ApplicationPayload must be provided.",
        "operationId": "Device_SendDeviceMessage",
        "responses": {
          "200": {
            "description": "Indicates whether the downlink message was enqueued successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeviceMessageResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "DevEUI",
            "description": "Unique identifier of the target device. Required. Must be a 16-character hexadecimal string.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDeviceMessage"
            }
          }
        ],
        "tags": [
          "Device"
        ]
      }
    },
    "/v1/devices/{DevEUI}/payloads": {
      "get": {
        "summary": "Lists device payloads by DevEUI",
        "description": "Retrieves payload records for a device by DevEUI. Supports filtering by start time and end time in RFC 3339 format. Example: /v1/devices/0100100020005001/payloads?StartTime=2012-11-09T21:03:59.000Z.",
        "operationId": "Device_GetDevicePayloads",
        "responses": {
          "200": {
            "description": "Payload records for the device matching the filter criteria.",
            "schema": {
              "$ref": "#/definitions/apiDevicePayloadResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "DevEUI",
            "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "StartTime",
            "description": "Filters payloads to those received at or after this timestamp in RFC 3339 format. Optional.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "EndTime",
            "description": "Filters payloads to those received at or before this timestamp in RFC 3339 format. Optional.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "tags": [
          "Device"
        ]
      }
    },
    "/v1/groups/devices": {
      "get": {
        "summary": "Lists all device groups",
        "description": "Retrieves all device groups, including the devices associated with each group.",
        "operationId": "DeviceGroup_GetDeviceGroups",
        "responses": {
          "200": {
            "description": "List of all device groups for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "DeviceGroup"
        ]
      },
      "post": {
        "summary": "Creates a new device group",
        "description": "Creates a new device group with an optional list of device EUIs.",
        "operationId": "DeviceGroup_CreateDeviceGroup",
        "responses": {
          "200": {
            "description": "Unique identifier of the created device group.",
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupCreate"
            }
          }
        ],
        "tags": [
          "DeviceGroup"
        ]
      }
    },
    "/v1/groups/devices/{Id}": {
      "get": {
        "summary": "Retrieves a device group by ID",
        "description": "Retrieves a single device group by ID, including associated device statistics.",
        "operationId": "DeviceGroup_GetDeviceGroup",
        "responses": {
          "200": {
            "description": "A logical collection of devices.",
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the device group.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "DeviceGroup"
        ]
      },
      "delete": {
        "summary": "Deletes a device group by ID",
        "description": "Permanently deletes a device group by ID. This action is irreversible. Devices in the group are not deleted.",
        "operationId": "DeviceGroup_DeleteDeviceGroup",
        "responses": {
          "200": {
            "description": "Indicates whether the device group was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the device group.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "DeviceGroup"
        ]
      },
      "put": {
        "summary": "Replaces a device group by ID",
        "description": "Replaces all fields of an existing device group by ID.",
        "operationId": "DeviceGroup_UpdateDeviceGroup",
        "responses": {
          "200": {
            "description": "Indicates whether the device group was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the device group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupUpdate"
            }
          }
        ],
        "tags": [
          "DeviceGroup"
        ]
      },
      "patch": {
        "summary": "Partially updates a device group by ID",
        "description": "Partially updates an existing device group by ID. Only provided fields are modified.",
        "operationId": "DeviceGroup_PatchDeviceGroup",
        "responses": {
          "200": {
            "description": "Indicates whether the device group was partially updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the device group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDeviceGroupPatch"
            }
          }
        ],
        "tags": [
          "DeviceGroup"
        ]
      }
    },
    "/v1/groups/devices/{Id}/recent": {
      "get": {
        "summary": "Lists devices with recent matching payloads by group ID",
        "description": "Retrieves devices in a group that sent a specific payload within the specified time range.",
        "operationId": "DeviceGroup_GetDeviceGroupRecent",
        "responses": {
          "200": {
            "description": "List of device EUIs that matched the search criteria.",
            "schema": {
              "$ref": "#/definitions/apiGetDeviceGroupRecentResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the device group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "Payload",
            "description": "Hexadecimal payload to search for (e.g., \"a1b2c3\"). Optional.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "StartTime",
            "description": "Filters results to those at or after this timestamp in RFC 3339 format. Optional.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "EndTime",
            "description": "Filters results to those at or before this timestamp in RFC 3339 format. Optional.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "tags": [
          "DeviceGroup"
        ]
      }
    },
    "/v1/deviceprofiles": {
      "get": {
        "summary": "Lists all device profiles",
        "description": "Retrieves all device profiles available for device provisioning.",
        "operationId": "DeviceProfile_GetDeviceProfiles",
        "responses": {
          "200": {
            "description": "List of all device profiles available for device provisioning.",
            "schema": {
              "$ref": "#/definitions/apiDeviceProfileResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "DeviceProfile"
        ]
      }
    },
    "/v1/deviceprofiles/{Id}/devices": {
      "patch": {
        "summary": "Associates devices with a device profile by ID",
        "description": "Associates the specified devices with a device profile by ID. Returns individual success or failure results for each device.",
        "operationId": "DeviceProfile_UpdateDeviceProfileDevices",
        "responses": {
          "200": {
            "description": "Per-device results indicating success or failure for each device in the request.",
            "schema": {
              "$ref": "#/definitions/apiDeviceProfileDevicesUpdateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the device profile. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiDeviceProfileDevicesUpdate"
            }
          }
        ],
        "tags": [
          "DeviceProfile"
        ]
      }
    },
    "/v0/multicastgroups": {
      "get": {
        "summary": "Lists all multicast groups",
        "description": "Retrieves all multicast groups associated with the authenticated account.",
        "operationId": "MulticastGroup_GetMulticastGroupsNS",
        "responses": {
          "200": {
            "description": "List of all multicast groups for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/apiGetMulticastGroupsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "MulticastGroup"
        ]
      },
      "post": {
        "summary": "Creates a new multicast group",
        "description": "Creates a new multicast group with the specified configuration.",
        "operationId": "MulticastGroup_CreateMulticastGroupNS",
        "responses": {
          "200": {
            "description": "Indicates whether the multicast group was created successfully.",
            "schema": {
              "$ref": "#/definitions/apiCreateMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiCreateMulticastGroupRequest"
            }
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      }
    },
    "/v0/multicastgroups/{MulticastDevEUI}": {
      "get": {
        "summary": "Retrieves a multicast group by MulticastDevEUI",
        "description": "Retrieves a single multicast group by its MulticastDevEUI.",
        "operationId": "MulticastGroup_GetMulticastGroupNS",
        "responses": {
          "200": {
            "description": "Multicast group matching the requested MulticastDevEUI.",
            "schema": {
              "$ref": "#/definitions/apiGetMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      },
      "delete": {
        "summary": "Deletes a multicast group by MulticastDevEUI",
        "description": "Permanently deletes a multicast group by MulticastDevEUI. This action is irreversible.",
        "operationId": "MulticastGroup_DeleteMulticastGroupNS",
        "responses": {
          "200": {
            "description": "Indicates whether the multicast group was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiDeleteMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      },
      "put": {
        "summary": "Replaces a multicast group by MulticastDevEUI",
        "description": "Replaces all mutable fields of an existing multicast group by MulticastDevEUI.",
        "operationId": "MulticastGroup_UpdateMulticastGroupNS",
        "responses": {
          "200": {
            "description": "Indicates whether the multicast group was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiUpdateMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiUpdateMulticastGroupRequest"
            }
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      }
    },
    "/v0/multicastgroups/{MulticastDevEUI}/devices/associate": {
      "post": {
        "summary": "Associates devices with a multicast group by MulticastDevEUI",
        "description": "Associates one or more devices with a multicast group by MulticastDevEUI.",
        "operationId": "MulticastGroup_AddDevicesWithMulticastGroup",
        "responses": {
          "200": {
            "description": "Devices successfully associated and devices ignored.",
            "schema": {
              "$ref": "#/definitions/apiAddDevicesWithMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiAddDevicesWithMulticastGroupRequest"
            }
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      }
    },
    "/v0/multicastgroups/{MulticastDevEUI}/devices/deassociate": {
      "post": {
        "summary": "Removes devices from a multicast group by MulticastDevEUI",
        "description": "Removes one or more devices from a multicast group by MulticastDevEUI.",
        "operationId": "MulticastGroup_RemoveDevicesFromMulticastGroup",
        "responses": {
          "200": {
            "description": "Devices successfully removed and devices ignored.",
            "schema": {
              "$ref": "#/definitions/apiRemoveDevicesFromMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiRemoveDevicesFromMulticastGroupRequest"
            }
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      }
    },
    "/v0/multicastgroups/{MulticastDevEUI}/gateways": {
      "get": {
        "summary": "Lists gateways associated with a multicast group by MulticastDevEUI",
        "description": "Retrieves all gateways associated with a multicast group by MulticastDevEUI.",
        "operationId": "MulticastGroup_GetGatewaysByMulticastGroup",
        "responses": {
          "200": {
            "description": "List of gateway node IDs associated with the multicast group.",
            "schema": {
              "$ref": "#/definitions/apiGetGatewaysByMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      }
    },
    "/v0/multicastgroups/{MulticastDevEUI}/gateways/associate": {
      "post": {
        "summary": "Associates gateways with a multicast group by MulticastDevEUI",
        "description": "Associates one or more gateways with a multicast group by MulticastDevEUI.",
        "operationId": "MulticastGroup_AddGatewaysWithMulticastGroup",
        "responses": {
          "200": {
            "description": "Gateways successfully associated and gateways ignored.",
            "schema": {
              "$ref": "#/definitions/apiAddGatewaysWithMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiAddGatewaysWithMulticastGroupRequest"
            }
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      }
    },
    "/v0/multicastgroups/{MulticastDevEUI}/gateways/deassociate": {
      "post": {
        "summary": "Removes gateways from a multicast group by MulticastDevEUI",
        "description": "Removes one or more gateways from a multicast group by MulticastDevEUI.",
        "operationId": "MulticastGroup_RemoveGatewaysFromMulticastGroup",
        "responses": {
          "200": {
            "description": "Gateways successfully removed and gateways ignored.",
            "schema": {
              "$ref": "#/definitions/apiRemoveGatewaysFromMulticastGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "MulticastDevEUI",
            "description": "Unique DevEUI of the multicast group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiRemoveGatewaysFromMulticastGroupRequest"
            }
          }
        ],
        "tags": [
          "MulticastGroup"
        ]
      }
    },
    "/v1/gateways": {
      "get": {
        "summary": "Lists all gateways",
        "description": "Retrieves all gateways associated with the authenticated account.",
        "operationId": "Gateway_GetGateways",
        "responses": {
          "200": {
            "description": "List of all gateways for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/machineqapiGatewayResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Gateway"
        ]
      },
      "post": {
        "summary": "Creates a new gateway",
        "description": "Creates a new gateway with the specified configuration.",
        "operationId": "Gateway_CreateGateway",
        "responses": {
          "200": {
            "description": "Unique identifier of the created gateway.",
            "schema": {
              "$ref": "#/definitions/apiGatewayCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiGatewayCreate"
            }
          }
        ],
        "tags": [
          "Gateway"
        ]
      }
    },
    "/v1/gateways/connection": {
      "get": {
        "summary": "Lists all gateways grouped by connection status",
        "description": "Retrieves all gateways grouped by connection status: never connected, disconnected, and connected.",
        "operationId": "Gateway_GetGatewaysByConnection",
        "responses": {
          "200": {
            "description": "All gateways grouped by connection status: never connected, disconnected, and connected.",
            "schema": {
              "$ref": "#/definitions/apiGatewaysConnectionResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Gateway"
        ]
      }
    },
    "/v1/gateways/health": {
      "get": {
        "summary": "Lists all gateways grouped by health status",
        "description": "Retrieves all gateways grouped by health status: initializing, connect error, RF error, and active.",
        "operationId": "Gateway_GetGatewaysByHealth",
        "responses": {
          "200": {
            "description": "All gateways grouped by health status: initializing, connect error, RF error, and active.",
            "schema": {
              "$ref": "#/definitions/apiGatewaysHealthResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Gateway"
        ]
      }
    },
    "/v1/gateways/{Id}": {
      "get": {
        "summary": "Retrieves a gateway by ID or Node ID",
        "description": "Retrieves a single gateway by ID or Node ID, including its configuration and statistics.",
        "operationId": "Gateway_GetGateway",
        "responses": {
          "200": {
            "description": "A networking device that bridges devices and a central network server.",
            "schema": {
              "$ref": "#/definitions/apiGatewayInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier or Node ID of the gateway.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Gateway"
        ]
      },
      "delete": {
        "summary": "Deletes a gateway by ID or Node ID",
        "description": "Permanently deletes a gateway by ID or Node ID. This action is irreversible.",
        "operationId": "Gateway_DeleteGateway",
        "responses": {
          "200": {
            "description": "Indicates whether the gateway was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiGatewayError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier or Node ID of the gateway.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Gateway"
        ]
      },
      "put": {
        "summary": "Replaces a gateway by ID or Node ID",
        "description": "Replaces all mutable fields of an existing gateway by ID or Node ID.",
        "operationId": "Gateway_UpdateGateway",
        "responses": {
          "200": {
            "description": "Indicates whether the gateway was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiGatewayError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier or Node ID of the gateway. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiGatewayUpdate"
            }
          }
        ],
        "tags": [
          "Gateway"
        ]
      },
      "patch": {
        "summary": "Partially updates a gateway by ID or Node ID",
        "description": "Partially updates an existing gateway by ID or Node ID. Only provided fields are modified.",
        "operationId": "Gateway_PatchGateway",
        "responses": {
          "200": {
            "description": "Indicates whether the gateway was partially updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiGatewayError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier or Node ID of the gateway. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiGatewayPatch"
            }
          }
        ],
        "tags": [
          "Gateway"
        ]
      }
    },
    "/v1/gateways/{Id}/devices": {
      "get": {
        "summary": "Lists devices seen by a gateway by ID or Node ID",
        "description": "Retrieves devices that communicated through this gateway. Supports filtering by number of days.",
        "operationId": "Gateway_GetGatewayDevices",
        "responses": {
          "200": {
            "description": "List of devices that communicated through this gateway.",
            "schema": {
              "$ref": "#/definitions/apiGatewayDeviceResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier or Node ID of the gateway.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "Days",
            "description": "Number of days to look back for device activity. Optional.",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "tags": [
          "Gateway"
        ]
      }
    },
    "/v1/gateways/{Id}/statistics": {
      "get": {
        "summary": "Retrieves gateway statistics by ID or Node ID",
        "description": "Retrieves statistics for a gateway by ID or Node ID.",
        "operationId": "Gateway_GetGatewayStatistics",
        "responses": {
          "200": {
            "description": "Health, connectivity, and performance statistics for the gateway.",
            "schema": {
              "$ref": "#/definitions/apiGatewayStatistics"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier or Node ID of the gateway.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Gateway"
        ]
      }
    },
    "/v1/gateways/{NodeID}/events": {
      "get": {
        "summary": "Lists gateway events by Node ID",
        "description": "Retrieves events for a gateway by Node ID within the specified time range. Defaults to the last 30 days if no start and end time are provided.",
        "operationId": "Gateway_GetGatewayEvents",
        "responses": {
          "200": {
            "description": "Historical events for the gateway within the requested time range.",
            "schema": {
              "$ref": "#/definitions/machineqapiGetGatewayEventsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "NodeID",
            "description": "Unique Node ID of the gateway. Required. Must be a 16-character hexadecimal string.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "StartTime",
            "description": "Filters events to those at or after this timestamp in RFC 3339 format. Optional. Defaults to 30 days ago.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "EndTime",
            "description": "Filters events to those at or before this timestamp in RFC 3339 format. Optional. Defaults to now.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "tags": [
          "Gateway"
        ]
      }
    },
    "/v1/groups/gateways": {
      "get": {
        "summary": "Lists all gateway groups",
        "description": "Retrieves all gateway groups, including the gateway IDs in each group.",
        "operationId": "GatewayGroup_GetGatewayGroups",
        "responses": {
          "200": {
            "description": "List of all gateway groups for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "GatewayGroup"
        ]
      },
      "post": {
        "summary": "Creates a new gateway group",
        "description": "Creates a new gateway group with an optional list of gateway IDs.",
        "operationId": "GatewayGroup_CreateGatewayGroup",
        "responses": {
          "200": {
            "description": "Unique identifier of the created gateway group.",
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupCreate"
            }
          }
        ],
        "tags": [
          "GatewayGroup"
        ]
      }
    },
    "/v1/groups/gateways/{Id}": {
      "get": {
        "summary": "Retrieves a gateway group by ID",
        "description": "Retrieves a single gateway group by ID, including associated gateway statistics.",
        "operationId": "GatewayGroup_GetGatewayGroup",
        "responses": {
          "200": {
            "description": "A logical collection of gateways.",
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the gateway group.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "GatewayGroup"
        ]
      },
      "delete": {
        "summary": "Deletes a gateway group by ID",
        "description": "Permanently deletes a gateway group by ID. This action is irreversible. Gateways in the group are not deleted.",
        "operationId": "GatewayGroup_DeleteGatewayGroup",
        "responses": {
          "200": {
            "description": "Indicates whether the gateway group was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the gateway group.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "GatewayGroup"
        ]
      },
      "put": {
        "summary": "Replaces a gateway group by ID",
        "description": "Replaces all fields of an existing gateway group by ID.",
        "operationId": "GatewayGroup_UpdateGatewayGroup",
        "responses": {
          "200": {
            "description": "Indicates whether the gateway group was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the gateway group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupUpdate"
            }
          }
        ],
        "tags": [
          "GatewayGroup"
        ]
      },
      "patch": {
        "summary": "Partially updates a gateway group by ID",
        "description": "Partially updates an existing gateway group by ID. Only provided fields are modified.",
        "operationId": "GatewayGroup_PatchGatewayGroup",
        "responses": {
          "200": {
            "description": "Indicates whether the gateway group was partially updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the gateway group. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiGatewayGroupPatch"
            }
          }
        ],
        "tags": [
          "GatewayGroup"
        ]
      }
    },
    "/v1/gatewayprofiles": {
      "get": {
        "summary": "Lists all gateway profiles",
        "description": "Retrieves all gateway profiles, or models, available for gateway provisioning.",
        "operationId": "GatewayProfile_GetGatewayProfiles",
        "responses": {
          "200": {
            "description": "List of all gateway profiles available for gateway provisioning.",
            "schema": {
              "$ref": "#/definitions/apiGatewayProfileResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "GatewayProfile"
        ]
      }
    },
    "/v1/logs": {
      "get": {
        "summary": "Lists log entries",
        "description": "Retrieves log entries for the authenticated account. Supports filtering by DevEUI, gateway ID, time range, frame type, and pagination. Returns up to 100 entries per page.",
        "operationId": "Logs_GetLogs",
        "responses": {
          "200": {
            "description": "Log entries matching the filter criteria.",
            "schema": {
              "$ref": "#/definitions/apiLogResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "DevEUI",
            "description": "Filters logs by device EUI. Optional. Must be a 16-character hexadecimal string.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "GatewayID",
            "description": "Filters logs by gateway node ID. Optional.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "StartTime",
            "description": "Filters logs to those at or after this timestamp in RFC 3339 format. Optional.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "EndTime",
            "description": "Filters logs to those at or before this timestamp in RFC 3339 format. Optional.",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "Page",
            "description": "Page number of results to retrieve. Each page contains up to 100 entries. Optional.",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "LogFrameFilter.Stream",
            "description": "Filters by transmission direction. Allowed values: UPSTREAM, DOWNSTREAM. Optional.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "NOSTREAMFILTER",
                "UPSTREAM",
                "DOWNSTREAM"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "LogFrameFilter.MessageType",
            "description": "Filters by LoRaWAN message type. Allowed values: MAC, MACDATA, DATA, NONE. Optional.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "NOMESSAGETYPEFILTER",
                "MAC",
                "MACDATA",
                "DATA",
                "NONE"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "LogFrameFilter.Late",
            "description": "Filters by whether packets were marked as late. Allowed values: LATEFALSE, LATETRUE. Optional.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "NOLATEFILTER",
                "LATEFALSE",
                "LATETRUE"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "LogFrameFilter.Activation",
            "description": "Filters by activation message type. Allowed values: JOINREQUEST, JOINACCEPT. Optional.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "NOACTIVATIONFILTER",
                "JOINREQUEST",
                "JOINACCEPT"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "LogFrameFilter.Ack",
            "description": "Filters by whether the message contains an acknowledgment. Allowed values: ACKFALSE, ACKTRUE. Optional.",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "NOACKFILTER",
                "ACKFALSE",
                "ACKTRUE"
              ]
            },
            "collectionFormat": "multi"
          }
        ],
        "tags": [
          "Logs"
        ]
      }
    },
    "/v1/outputprofiles": {
      "get": {
        "summary": "Lists all output profiles",
        "description": "Retrieves all output profiles associated with the authenticated account.",
        "operationId": "OutputProfile_GetOutputProfiles",
        "responses": {
          "200": {
            "description": "List of all output profiles for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "OutputProfile"
        ]
      },
      "post": {
        "summary": "Creates a new output profile",
        "description": "Creates a new output profile with the specified destination configuration.",
        "operationId": "OutputProfile_CreateOutputProfile",
        "responses": {
          "200": {
            "description": "Unique identifier of the created output profile.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiOutputProfileCreate"
            }
          }
        ],
        "tags": [
          "OutputProfile"
        ]
      }
    },
    "/v1/outputprofiles/{Id}": {
      "get": {
        "summary": "Retrieves an output profile by ID",
        "description": "Retrieves a single output profile by ID.",
        "operationId": "OutputProfile_GetOutputProfile",
        "responses": {
          "200": {
            "description": "A configuration for device payload delivery that specifies destination endpoints and protocols.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the output profile.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "OutputProfile"
        ]
      },
      "delete": {
        "summary": "Deletes an output profile by ID",
        "description": "Permanently deletes an output profile by ID. This action is irreversible.",
        "operationId": "OutputProfile_DeleteOutputProfile",
        "responses": {
          "200": {
            "description": "Indicates whether the output profile was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the output profile.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "OutputProfile"
        ]
      },
      "put": {
        "summary": "Replaces an output profile by ID",
        "description": "Replaces all fields of an existing output profile by ID.",
        "operationId": "OutputProfile_UpdateOutputProfile",
        "responses": {
          "200": {
            "description": "Indicates whether the output profile was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the output profile. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiOutputProfileUpdate"
            }
          }
        ],
        "tags": [
          "OutputProfile"
        ]
      },
      "patch": {
        "summary": "Partially updates an output profile by ID",
        "description": "Partially updates an existing output profile by ID. Only provided fields are modified.",
        "operationId": "OutputProfile_PatchOutputProfile",
        "responses": {
          "200": {
            "description": "Indicates whether the output profile was partially updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the output profile. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiOutputProfilePatch"
            }
          }
        ],
        "tags": [
          "OutputProfile"
        ]
      }
    },
    "/v1/outputprofiles/{Id}/devices": {
      "put": {
        "summary": "Replaces all devices on an output profile by ID",
        "description": "Replaces the full list of devices associated with an output profile by ID. All previously associated devices are removed and replaced with the provided list.",
        "operationId": "OutputProfile_ReplaceOutputProfileDevices",
        "responses": {
          "200": {
            "description": "Per-device results indicating success or failure for each device in the request.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileDevicesUpdateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the output profile. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiOutputProfileDevicesUpdate"
            }
          }
        ],
        "tags": [
          "OutputProfile"
        ]
      },
      "patch": {
        "summary": "Associates devices with an output profile by ID",
        "description": "Associates the specified devices with an output profile by ID. Returns individual success or failure results for each device.",
        "operationId": "OutputProfile_UpdateOutputProfileDevices",
        "responses": {
          "200": {
            "description": "Per-device results indicating success or failure for each device in the request.",
            "schema": {
              "$ref": "#/definitions/apiOutputProfileDevicesUpdateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the output profile. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiOutputProfileDevicesUpdate"
            }
          }
        ],
        "tags": [
          "OutputProfile"
        ]
      }
    },
    "/v1/rfregions": {
      "get": {
        "summary": "Lists all RF regions",
        "description": "Retrieves all RF regions available for gateway provisioning.",
        "operationId": "RFRegion_ListRFRegions",
        "responses": {
          "200": {
            "description": "List of all RF regions available for gateway provisioning.",
            "schema": {
              "$ref": "#/definitions/apiListRFRegionsResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "RFRegion"
        ]
      }
    },
    "/v1/roles": {
      "get": {
        "summary": "Lists all roles",
        "description": "Retrieves all roles associated with the authenticated account.",
        "operationId": "Role_GetRoles",
        "responses": {
          "200": {
            "description": "List of all roles for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/apiRoleResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Role"
        ]
      },
      "post": {
        "summary": "Creates a new role",
        "description": "Creates a new role with the specified permissions.",
        "operationId": "Role_CreateRole",
        "responses": {
          "200": {
            "description": "Unique identifier of the created role.",
            "schema": {
              "$ref": "#/definitions/apiRoleCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiRoleCreate"
            }
          }
        ],
        "tags": [
          "Role"
        ]
      }
    },
    "/v1/roles/{Id}": {
      "get": {
        "summary": "Retrieves a role by ID",
        "description": "Retrieves a single role by ID, including its permissions and assigned users and applications.",
        "operationId": "Role_GetRole",
        "responses": {
          "200": {
            "description": "A set of CRUD permissions that a user or application has for interacting with devices, users, and gateways.",
            "schema": {
              "$ref": "#/definitions/apiRoleInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the role.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Role"
        ]
      },
      "delete": {
        "summary": "Deletes a role by ID",
        "description": "Permanently deletes a role by ID. This action is irreversible.",
        "operationId": "Role_DeleteRole",
        "responses": {
          "200": {
            "description": "Indicates whether the role was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiRoleError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the role.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Role"
        ]
      },
      "put": {
        "summary": "Replaces a role by ID",
        "description": "Replaces all fields of an existing role by ID.",
        "operationId": "Role_UpdateRole",
        "responses": {
          "200": {
            "description": "Indicates whether the role was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiRoleError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the role. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiRoleUpdate"
            }
          }
        ],
        "tags": [
          "Role"
        ]
      },
      "patch": {
        "summary": "Partially updates a role by ID",
        "description": "Partially updates an existing role by ID. Only provided fields are modified.",
        "operationId": "Role_PatchRole",
        "responses": {
          "200": {
            "description": "Indicates whether the role was partially updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiRoleError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the role. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiRolePatch"
            }
          }
        ],
        "tags": [
          "Role"
        ]
      }
    },
    "/v1/serviceprofiles": {
      "get": {
        "summary": "Lists all service profiles",
        "description": "Retrieves all service profiles available for device provisioning. Each service profile defines the connectivity parameters for a device.",
        "operationId": "ServiceProfile_GetServiceProfiles",
        "responses": {
          "200": {
            "description": "List of all service profiles available for device provisioning.",
            "schema": {
              "$ref": "#/definitions/apiServiceProfilesResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "ServiceProfile"
        ]
      }
    },
    "/v1/users": {
      "get": {
        "summary": "Lists all users",
        "description": "Retrieves all users associated with the authenticated account.",
        "operationId": "Users_GetUsers",
        "responses": {
          "200": {
            "description": "List of all users for the authenticated account.",
            "schema": {
              "$ref": "#/definitions/apiUserResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Users"
        ]
      },
      "post": {
        "summary": "Creates a new user",
        "description": "Creates a new user with the specified credentials and contact information.",
        "operationId": "Users_CreateUser",
        "responses": {
          "200": {
            "description": "Unique identifier of the created user.",
            "schema": {
              "$ref": "#/definitions/apiUserCreateResponse"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiUserCreate"
            }
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/v1/users/{Id}": {
      "get": {
        "summary": "Retrieves a user by ID",
        "description": "Retrieves a single user by ID, including assigned roles and contact information.",
        "operationId": "Users_GetUser",
        "responses": {
          "200": {
            "description": "An account holder in the system with identifying information, assigned roles, and subscriber association.",
            "schema": {
              "$ref": "#/definitions/apiUserInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the user.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Users"
        ]
      },
      "delete": {
        "summary": "Deletes a user by ID",
        "description": "Permanently deletes a user by ID. This action is irreversible.",
        "operationId": "Users_DeleteUser",
        "responses": {
          "200": {
            "description": "Indicates whether the user was deleted successfully.",
            "schema": {
              "$ref": "#/definitions/apiUserError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the user.",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Users"
        ]
      },
      "put": {
        "summary": "Replaces a user by ID",
        "description": "Replaces all mutable fields of an existing user by ID.",
        "operationId": "Users_UpdateUser",
        "responses": {
          "200": {
            "description": "Indicates whether the user was replaced successfully.",
            "schema": {
              "$ref": "#/definitions/apiUserError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the user. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiUserUpdate"
            }
          }
        ],
        "tags": [
          "Users"
        ]
      },
      "patch": {
        "summary": "Partially updates a user by ID",
        "description": "Partially updates an existing user by ID. Only provided fields are modified.",
        "operationId": "Users_PatchUser",
        "responses": {
          "200": {
            "description": "Indicates whether the user was partially updated successfully.",
            "schema": {
              "$ref": "#/definitions/apiUserError"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "parameters": [
          {
            "name": "Id",
            "description": "Unique identifier of the user. Required.",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiUserPatch"
            }
          }
        ],
        "tags": [
          "Users"
        ]
      }
    },
    "/v1/version": {
      "get": {
        "summary": "Retrieves the application version",
        "description": "Retrieves the current application version.",
        "operationId": "Version_GetVersion",
        "responses": {
          "200": {
            "description": "Semantic version information for the application software.",
            "schema": {
              "$ref": "#/definitions/apiVersionInstance"
            }
          },
          "default": {
            "description": "An unexpected error response.",
            "schema": {
              "$ref": "#/definitions/rpcStatus"
            }
          }
        },
        "tags": [
          "Version"
        ]
      }
    }
  },
  "definitions": {
    "apiAccountError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      },
      "description": "Result of an account write operation."
    },
    "apiAccountPasswordReset": {
      "type": "object",
      "properties": {
        "CurrentPassword": {
          "type": "string",
          "description": "Current password for the account. Required for verification before the password can be changed."
        },
        "NewPassword": {
          "type": "string",
          "description": "Replacement password for the account. Must be at least 12 characters long and include at least 3 of the following 4 character types: lowercase letter, uppercase letter, number, or special character (such as !@#$%^&*). Cannot match any password in the user's password history."
        }
      },
      "description": "A request to change the authenticated user's password.",
      "required": [
        "CurrentPassword",
        "NewPassword"
      ]
    },
    "apiAccountPermissionResponse": {
      "type": "object",
      "properties": {
        "Device": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "Create, read, update, and delete permissions for Device resources."
        },
        "Gateway": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "Create, read, update, and delete permissions for Gateway resources."
        },
        "User": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "Create, read, update, and delete permissions for User resources."
        },
        "SubscriberAdmin": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "Create, read, update, and delete permissions for SubscriberAdmin resources."
        },
        "NetworkOperator": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "Create, read, update, and delete permissions for NetworkOperator resources."
        },
        "SysAdmin": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "Create, read, update, and delete permissions for SysAdmin resources."
        }
      },
      "description": "CRUD permission flags for each resource type available to the authenticated user."
    },
    "apiAccountResponse": {
      "type": "object",
      "properties": {
        "UserInfo": {
          "$ref": "#/definitions/apiUserInfo",
          "description": "Profile and role information for the authenticated user."
        },
        "SubscriberInfo": {
          "$ref": "#/definitions/apiSubscriberInfo",
          "description": "Organization and address information for the subscriber associated with the authenticated user."
        }
      },
      "description": "User and subscriber account information for the currently authenticated user."
    },
    "apiPermissionObject": {
      "type": "object",
      "properties": {
        "Create": {
          "type": "boolean",
          "description": "Whether create operations are allowed. True grants permission; false denies it."
        },
        "Read": {
          "type": "boolean",
          "description": "Whether read operations are allowed. True grants permission; false denies it."
        },
        "Update": {
          "type": "boolean",
          "description": "Whether update operations are allowed. True grants permission; false denies it."
        },
        "Delete": {
          "type": "boolean",
          "description": "Whether delete operations are allowed. True grants permission; false denies it."
        }
      },
      "description": "CRUD permission set."
    },
    "apiSubscriberInfo": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier for the subscriber."
        },
        "Name": {
          "type": "string",
          "description": "Display name of the subscriber organization."
        },
        "Address": {
          "type": "string",
          "description": "Primary street address of the subscriber. Optional; empty string if not set."
        },
        "Address2": {
          "type": "string",
          "description": "Secondary address line for the subscriber (e.g. apartment, suite, or floor). Optional; empty string if not set."
        },
        "City": {
          "type": "string",
          "description": "City of the subscriber's address. Optional; empty string if not set."
        },
        "State": {
          "type": "string",
          "description": "State or province of the subscriber's address. Optional; empty string if not set."
        },
        "Country": {
          "type": "string",
          "description": "Country of the subscriber's address. Optional; empty string if not set."
        },
        "PostalCode": {
          "type": "string",
          "description": "Postal or ZIP code of the subscriber's address. Optional; empty string if not set."
        }
      },
      "description": "Organization and address information for a subscriber."
    },
    "apiUserInfo": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier for the user."
        },
        "Email": {
          "type": "string",
          "description": "Email address of the user, in RFC 5322 format."
        },
        "Username": {
          "type": "string",
          "description": "Login username for the user account."
        },
        "FirstName": {
          "type": "string",
          "description": "First (given) name of the user."
        },
        "LastName": {
          "type": "string",
          "description": "Last (family) name of the user."
        },
        "PhoneNumber": {
          "type": "string",
          "description": "Contact phone number for the user. Optional; empty string if not set."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role names assigned to the user. Empty if no roles have been assigned."
        }
      },
      "description": "Profile and role information for a user."
    },
    "apiUserInfoPatch": {
      "type": "object",
      "properties": {
        "Email": {
          "type": "string",
          "description": "Email address for the user, in RFC 5322 format. Optional; omit to leave the current value unchanged."
        },
        "FirstName": {
          "type": "string",
          "description": "First (given) name of the user. Optional; omit to leave the current value unchanged."
        },
        "LastName": {
          "type": "string",
          "description": "Last (family) name of the user. Optional; omit to leave the current value unchanged."
        },
        "PhoneNumber": {
          "type": "string",
          "description": "Contact phone number for the user. Optional; omit to leave the current value unchanged."
        }
      },
      "description": "A request to partially update the authenticated user's profile information. Only fields included in the request body are modified; omitted fields remain unchanged."
    },
    "apiUserInfoUpdate": {
      "type": "object",
      "properties": {
        "Email": {
          "type": "string",
          "description": "Email address for the user, in RFC 5322 format. Required."
        },
        "FirstName": {
          "type": "string",
          "description": "First (given) name of the user. Required."
        },
        "LastName": {
          "type": "string",
          "description": "Last (family) name of the user. Required."
        },
        "PhoneNumber": {
          "type": "string",
          "description": "Contact phone number for the user. Optional; omit or send an empty string to clear the value."
        }
      },
      "description": "A request to fully replace the authenticated user's profile information. All required fields must be provided.",
      "required": [
        "Email",
        "FirstName",
        "LastName"
      ]
    },
    "protobufAny": {
      "type": "object",
      "description": "A generic message container that can hold an arbitrary serialized payload along with a type identifier.",
      "properties": {
        "typeUrl": {
          "type": "string",
          "description": "A URL or resource name that uniquely identifies the type of the serialized message contained in the value field."
        },
        "value": {
          "type": "string",
          "format": "byte",
          "description": "The serialized message data, encoded as a base64 string."
        }
      }
    },
    "rpcStatus": {
      "type": "object",
      "description": "A standard status object that represents the outcome of an API request, including error details when applicable.",
      "properties": {
        "code": {
          "type": "integer",
          "format": "int32",
          "description": "A numeric status code. 0 indicates success; non-zero values indicate an error."
        },
        "message": {
          "type": "string",
          "description": "A human-readable message providing additional details about the status."
        },
        "details": {
          "type": "array",
          "description": "A list of additional detail messages carrying supplementary error information, such as retry info or localized error messages.",
          "items": {
            "$ref": "#/definitions/protobufAny"
          }
        }
      }
    },
    "apiApplicationCreate": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the application. Required. Must be at least 1 character."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role IDs that control what the application can access. Optional. Omit to create an application with no roles."
        }
      },
      "required": [
        "Name"
      ]
    },
    "apiApplicationCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created application."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the application."
        },
        "UUID": {
          "type": "string",
          "description": "UUID (client ID) used to authenticate this application when requesting access tokens. Displayed only once."
        },
        "ClientSecret": {
          "type": "string",
          "description": "Client secret used to authenticate this application when requesting access tokens. Displayed only once and cannot be retrieved again."
        }
      }
    },
    "apiApplicationError": {
      "type": "object",
      "properties": {
        "Response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiApplicationFilter": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the application."
        }
      }
    },
    "apiApplicationInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the application."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the application."
        },
        "UUID": {
          "type": "string",
          "description": "UUID (client ID) used to authenticate this application when requesting access tokens."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role IDs that define the access permissions granted to this application."
        },
        "SubscriberId": {
          "type": "string",
          "description": "Unique identifier of the subscriber that owns this application."
        }
      },
      "description": "A client credential application used to authenticate and access the MQcentral API."
    },
    "apiApplicationPatch": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the application. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the application. Optional. Omit to leave unchanged."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role IDs that control what the application can access. Optional. Replaces the existing list of roles when provided."
        }
      },
      "required": [
        "Id"
      ]
    },
    "apiApplicationResponse": {
      "type": "object",
      "properties": {
        "Applications": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiApplicationInstance"
          },
          "description": "List of application objects. Empty if no applications exist."
        }
      }
    },
    "apiApplicationUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the application. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the application. Required. Must be at least 1 character."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role IDs that control what the application can access. Replaces the existing list of roles."
        }
      },
      "required": [
        "Id",
        "Name"
      ]
    },
    "apiRefreshApplicationResponse": {
      "type": "object",
      "properties": {
        "ClientSecret": {
          "type": "string",
          "description": "Newly generated client secret for the application. Displayed only once and cannot be retrieved again."
        }
      }
    },
    "apiDecoderTypeCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string"
        }
      }
    },
    "apiDecoderTypeError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiDecoderTypeInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the decoder type."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the decoder type. Required. Must be at least 1 character."
        },
        "PayloadDecoder": {
          "$ref": "#/definitions/apiPayloadDecoderType",
          "description": "Enum value identifying the internal payload decoding algorithm associated with this decoder type."
        }
      },
      "description": "A decoder type defining the method used to decode device payloads.",
      "required": [
        "Id",
        "Name"
      ]
    },
    "apiDecoderTypeResponse": {
      "type": "object",
      "properties": {
        "DecoderTypes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDecoderTypeInstance"
          },
          "description": "List of decoder type objects. Empty if no decoder types exist."
        }
      }
    },
    "apiPayloadDecoderType": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "MOTE",
        "ELSYS",
        "NETVOX",
        "LPP",
        "GLOBALSAT",
        "LPP_CHANNELS",
        "H2O",
        "MQPS",
        "LAIIER_SEVERN_WLD",
        "MOKOSMART_MK_117",
        "MILESIGHT_VS_133",
        "MILESIGHT_VS_330",
        "MILESIGHT_WS_101",
        "MILESIGHT_WS_201",
        "MILESIGHT_EM_300_CL",
        "GEORGIA_PACIFIC_KOLO_2_0",
        "MILESIGHT_EM_310_UDL",
        "VUTILITY_HOTDROP_DIRECT",
        "MOKOSMART_LW009_SM",
        "MILESIGHT_EM_500_PT100",
        "MILESIGHT_DS3604",
        "VICTOR_VLINK_V4XX",
        "MILESIGHT_VS350",
        "MILESIGHT_EM320_TH",
        "MILESIGHT_AM308_V2",
        "MILESIGHT_EM400_TLD",
        "MILESIGHT_EM400_MUD",
        "MILESIGHT_EM500_PP",
        "MACHINEQ_MQPS_V2",
        "MILESIGHT_VS341",
        "MILESIGHT_CT101",
        "MILESIGHT_CT103",
        "MILESIGHT_CT303",
        "MILESIGHT_WTS506",
        "MILESIGHT_UC300",
        "GEORGIA_PACIFIC_KOLO_CLICK_SPINDLE",
        "GEORGIA_PACIFIC_KOLO_CLICK_8AND10_TOWEL",
        "MIROMICO_MIRO_ALARM",
        "MILESIGHT_TS301",
        "MILESIGHT_GS601",
        "MILESIGHT_VS360"
      ],
      "default": "UNKNOWN"
    },
    "apiCreateDevicesResponse": {
      "type": "object",
      "properties": {
        "Response": {
          "type": "boolean"
        },
        "DevEUI": {
          "type": "string"
        },
        "Error": {
          "type": "string"
        },
        "Id": {
          "type": "string"
        }
      }
    },
    "apiDeleteDevicesResponse": {
      "type": "object",
      "properties": {
        "Response": {
          "type": "boolean"
        },
        "DevEUI": {
          "type": "string"
        },
        "Error": {
          "type": "string"
        }
      }
    },
    "apiDeviceConfigInfo": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string"
        },
        "DevEUI": {
          "type": "string"
        },
        "DevAddr": {
          "type": "string"
        },
        "PrivateData": {
          "type": "boolean"
        },
        "DecoderType": {
          "$ref": "#/definitions/apiDecoderTypeInstance"
        },
        "OutputProfile": {
          "$ref": "#/definitions/apiOutputProfileInstance"
        },
        "ActivationType": {
          "type": "string"
        },
        "SubscriberID": {
          "type": "string"
        },
        "ApplicationSKey": {
          "type": "string"
        },
        "NetworkServerType": {
          "type": "string"
        }
      }
    },
    "apiDeviceCreate": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device. Required. Must be at least 1 character."
        },
        "DevEUI": {
          "type": "string",
          "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{16}$"
        },
        "DevAddr": {
          "type": "string",
          "description": "Device address. Required for ABP activation; optional for OTAA. Must be an 8-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{8}$"
        },
        "NetworkSkey": {
          "type": "string",
          "description": "Network session key. Required for ABP activation; omit for OTAA. Must be a 32-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{32}$|^$"
        },
        "ActivationType": {
          "type": "string",
          "description": "Activation method for the device. Required. Allowed values: ABP, OTAA.",
          "pattern": "^(ABP|OTAA)$"
        },
        "ApplicationEUI": {
          "type": "string",
          "description": "Application EUI. Required for OTAA activation; omit for ABP. Must be a 16-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{16}$|^$"
        },
        "ApplicationKey": {
          "type": "string",
          "description": "Application key. Required for OTAA activation; omit for ABP. For LoRaWAN 1.0 devices, only the application key is needed. For LoRaWAN 1.1 devices, both the application key and network key are required. Must be a 32-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{32}$|^$"
        },
        "ApplicationSKey": {
          "type": "string",
          "description": "Application session key. Required for ABP activation; omit for OTAA. Must be a 32-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{32}$|^$"
        },
        "ServiceProfile": {
          "type": "string",
          "description": "Identifier of the service profile to associate with this device. Required. Retrieve available values from GET /v1/serviceprofiles."
        },
        "DeviceProfile": {
          "type": "string",
          "description": "Identifier of the device profile to associate with this device. Required. Retrieve available values from GET /v1/deviceprofiles."
        },
        "DecoderType": {
          "type": "string",
          "description": "Identifier of the decoder type used to decode payloads from this device. Optional. Retrieve available values from GET /v1/decodertypes."
        },
        "OutputProfile": {
          "type": "string",
          "description": "Identifier of the output profile used to route payloads to external servers. Optional. Retrieve available values from GET /v1/outputprofiles."
        },
        "PrivateData": {
          "type": "boolean",
          "description": "Whether to suppress data storage. True means data is not stored; false means data is stored for future processing. Default: false."
        },
        "NetworkKey": {
          "type": "string",
          "description": "Network key. Required for OTAA activation with LoRaWAN 1.1 devices only. Must be a 32-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{32}$|^$"
        }
      },
      "description": "A request to create a new device.",
      "required": [
        "Name",
        "DevEUI",
        "ActivationType",
        "ServiceProfile",
        "DeviceProfile"
      ]
    },
    "apiDeviceCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created device."
        }
      }
    },
    "apiDeviceError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiDeviceFilter": {
      "type": "object",
      "properties": {
        "DevEUI": {
          "type": "string",
          "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{16}$"
        }
      },
      "required": [
        "DevEUI"
      ]
    },
    "apiDeviceInstance": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device."
        },
        "DevEUI": {
          "type": "string",
          "description": "Unique identifier of the device. 16-character hexadecimal string."
        },
        "ActivationType": {
          "type": "string",
          "description": "Activation method for the device. Allowed values: ABP, OTAA."
        },
        "ServiceProfile": {
          "type": "string",
          "description": "Identifier of the service profile associated with this device."
        },
        "DeviceProfile": {
          "type": "string",
          "description": "Identifier of the device profile associated with this device."
        },
        "DecoderType": {
          "type": "string",
          "description": "Identifier of the decoder type used to decode payloads from this device."
        },
        "OutputProfile": {
          "type": "string",
          "description": "Identifier of the output profile used to route payloads to external servers."
        },
        "PrivateData": {
          "type": "boolean",
          "description": "Whether data storage is suppressed. True means data is not stored; false means data is stored for future processing."
        },
        "CreatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the device was created in RFC 3339 format."
        },
        "UpdatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the device was last updated in RFC 3339 format."
        },
        "UpdatedBy": {
          "type": "string",
          "description": "Identifier of the user who last updated the device."
        },
        "LastUplink": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last uplink received from the device in RFC 3339 format."
        },
        "Statistics": {
          "$ref": "#/definitions/apiDeviceStatistics",
          "description": "Health and connectivity statistics for the device."
        },
        "PayloadDecoder": {
          "$ref": "#/definitions/apiPayloadDecoderType",
          "description": "Enum value identifying the internal payload decoding algorithm for this device."
        }
      },
      "description": "A device with its configuration, connectivity parameters, and health statistics."
    },
    "apiDeviceMessage": {
      "type": "object",
      "properties": {
        "DevEUI": {
          "type": "string",
          "description": "Unique identifier of the target device. Required. Must be a 16-character hexadecimal string."
        },
        "Payload": {
          "type": "string",
          "description": "Raw hexadecimal payload to send to the device (e.g., \"a1b2c3\"). Either Payload or ApplicationPayload must be provided.",
          "pattern": "^([A-Fa-f0-9][A-Fa-f0-9])+$"
        },
        "TargetPort": {
          "type": "string",
          "description": "LoRaWAN port number for the message. Required when Payload is provided; optional otherwise. Allowed range: 1–223 or 225.",
          "pattern": "^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-1][0-9]|22[0-3]|225)$"
        },
        "Confirm": {
          "type": "boolean",
          "description": "Whether the device must acknowledge receipt. True means the message requires acknowledgment; false means it does not."
        },
        "FlushQueue": {
          "type": "boolean",
          "description": "Whether to clear all pending messages before sending this one. True means the queue is flushed first; false means existing messages are preserved."
        },
        "ApplicationPayload": {
          "type": "object",
          "description": "LoRaWAN application payload for the downlink message. Device-specific JSON object whose structure varies based on the receiving device type. Consult the device documentation for the correct payload format. Either Payload or ApplicationPayload must be provided. "
        }
      },
      "description": "A request to send a downstream message to a device.",
      "required": [
        "DevEUI"
      ]
    },
    "apiDeviceMessageResponse": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the request to enqueue the downlink succeeded; false means it failed."
        }
      }
    },
    "apiDevicePatch": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device. Optional. Omit to leave unchanged."
        },
        "DevEUI": {
          "type": "string",
          "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{16}$"
        },
        "ServiceProfile": {
          "type": "string",
          "description": "Identifier of the service profile associated with this device. Optional. Omit to leave unchanged."
        },
        "DeviceProfile": {
          "type": "string",
          "description": "Identifier of the device profile associated with this device. Optional. Omit to leave unchanged."
        },
        "DecoderType": {
          "type": "string",
          "description": "Identifier of the decoder type used to decode payloads from this device. Optional. Omit to leave unchanged."
        },
        "OutputProfile": {
          "type": "string",
          "description": "Identifier of the output profile used to route payloads to external servers. Optional. Omit to leave unchanged."
        },
        "PrivateData": {
          "type": "boolean",
          "description": "Whether to suppress data storage. True means data is not stored; false means data is stored for future processing."
        },
        "RemoveOutputProfile": {
          "type": "boolean",
          "description": "Whether to remove the output profile association. True means the output profile reference is removed; false leaves it unchanged."
        }
      },
      "description": "A request to partially update a device. Only provided fields are modified.",
      "required": [
        "Name",
        "DevEUI"
      ]
    },
    "apiDevicePayload": {
      "type": "object",
      "properties": {
        "Time": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the payload was received in RFC 3339 format."
        },
        "Data": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Key-value map of decoded payload data fields."
        },
        "ApplicationData": {
          "type": "object",
          "description": "LoRaWAN application payload for the uplink message. Device-specific JSON object whose structure varies based on the device type. Consult the device documentation for the correct payload format."
        }
      }
    },
    "apiDevicePayloadResponse": {
      "type": "object",
      "properties": {
        "Payloads": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDevicePayload"
          },
          "description": "List of payload records for the device. Empty if no payloads match the filter criteria."
        }
      }
    },
    "apiDeviceResponse": {
      "type": "object",
      "properties": {
        "Devices": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceInstance"
          },
          "description": "List of device objects. Empty if no devices exist."
        }
      }
    },
    "apiDeviceStatistics": {
      "type": "object",
      "properties": {
        "HealthState": {
          "type": "string",
          "description": "Approximate health status of the device. Allowed values: good, fair, poor."
        },
        "SpreadingFactor": {
          "type": "integer",
          "format": "int32",
          "description": "Current LoRaWAN spreading factor for the device (e.g., 7 means SF7). Range: 7–12."
        },
        "AverageRSSI": {
          "type": "number",
          "format": "double",
          "description": "Average RSSI over the last 24 hours in dBm."
        },
        "AverageESP": {
          "type": "number",
          "format": "double",
          "description": "Average estimated signal power (ESP) over the last 24 hours in decibel-milliwatts (dBm)."
        },
        "AverageSNR": {
          "type": "number",
          "format": "double",
          "description": "Average signal-to-noise ratio (SNR) over the last 24 hours in decibels (dB)."
        },
        "PacketErrorRate": {
          "type": "number",
          "format": "double",
          "description": "Percentage of dropped packets over the last 24 hours."
        },
        "BatteryLevel": {
          "type": "integer",
          "format": "int32",
          "description": "Last reported battery level from the device."
        },
        "AverageWeeklyPackets": {
          "type": "integer",
          "format": "int32",
          "description": "Average number of packets received per day over the past week."
        }
      }
    },
    "apiDeviceUpdate": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device. Required. Must be at least 1 character."
        },
        "DevEUI": {
          "type": "string",
          "description": "Unique identifier of the device. Required. Must be a 16-character hexadecimal string.",
          "pattern": "^[A-Fa-f0-9]{16}$"
        },
        "ServiceProfile": {
          "type": "string",
          "description": "Identifier of the service profile associated with this device. Required."
        },
        "DeviceProfile": {
          "type": "string",
          "description": "Identifier of the device profile associated with this device. Required."
        },
        "DecoderType": {
          "type": "string",
          "description": "Identifier of the decoder type used to decode payloads from this device. Optional."
        },
        "OutputProfile": {
          "type": "string",
          "description": "Identifier of the output profile used to route payloads to external servers. Optional."
        },
        "PrivateData": {
          "type": "boolean",
          "description": "Whether to suppress data storage. True means data is not stored; false means data is stored for future processing."
        }
      },
      "description": "A request to replace all mutable fields of a device.",
      "required": [
        "Name",
        "DevEUI",
        "ServiceProfile",
        "DeviceProfile"
      ]
    },
    "apiDevicesHealthCountResponse": {
      "type": "object",
      "properties": {
        "Good": {
          "type": "integer",
          "format": "int32",
          "description": "Number of devices with good health status."
        },
        "Fair": {
          "type": "integer",
          "format": "int32",
          "description": "Number of devices with fair health status."
        },
        "Poor": {
          "type": "integer",
          "format": "int32",
          "description": "Number of devices with poor health status."
        },
        "Offline": {
          "type": "integer",
          "format": "int32",
          "description": "Number of devices that are currently offline."
        }
      }
    },
    "apiDevicesHealthResponse": {
      "type": "object",
      "properties": {
        "Good": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceInstance"
          },
          "description": "List of devices with good health status."
        },
        "Fair": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceInstance"
          },
          "description": "List of devices with fair health status."
        },
        "Poor": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceInstance"
          },
          "description": "List of devices with poor health status."
        },
        "Offline": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceInstance"
          },
          "description": "List of devices that are currently offline."
        }
      }
    },
    "apiOutputProfileAWSParams": {
      "type": "object",
      "properties": {
        "Endpoint": {
          "type": "string",
          "description": "AWS IoT Core endpoint. Required. Must be in the form '{account-specific-prefix}.iot.{aws-region}.amazonaws.com' without a port or scheme (e.g., a3fhmgkt5lz2ij.iot.us-east-1.amazonaws.com)."
        },
        "x509Certificate": {
          "type": "string",
          "description": "X.509 certificate in PEM format. Required. Replace newlines with \\n in JSON."
        },
        "PrivateKey": {
          "type": "string",
          "description": "X.509 private key in PEM format. Required. Replace newlines with \\n in JSON."
        },
        "DestinationId": {
          "type": "string",
          "description": "Unique identifier of this destination."
        },
        "Active": {
          "type": "boolean",
          "description": "Whether this destination is active. True means messages are delivered; false means delivery is paused."
        },
        "Environment": {
          "type": "string",
          "description": "Deployment environment of the destination, indicating message criticality for support purposes. Allowed values: production, staging, development.",
          "pattern": "(^production$|^staging$|^development$|^$)"
        }
      },
      "description": "AWS IoT Core destination configuration for an output profile.",
      "required": [
        "Endpoint",
        "x509Certificate",
        "PrivateKey"
      ]
    },
    "apiOutputProfileAzureMQTTParams": {
      "type": "object",
      "properties": {
        "Host": {
          "type": "string",
          "description": "IoT Hub hostname. Required. Must be in the form '{hubname}.azure-devices.net' without a scheme or port."
        },
        "SharedAccessPolicyName": {
          "type": "string",
          "description": "Shared access policy name with Device access enabled. Required."
        },
        "SharedAccessKey": {
          "type": "string",
          "description": "Primary shared access key from the shared access policy. Required."
        },
        "ApiVersion": {
          "type": "string",
          "description": "Azure IoT Hub API version. Required. Latest supported version: 2016-11-14."
        },
        "OutputFormat": {
          "type": "string",
          "description": "Payload output format. Optional. Allowed values: raw, azure. Default: raw. Azure uses the IoT Hub common Device-to-Cloud (D2C) format.",
          "pattern": "(^raw$|^azure$|^$)"
        },
        "DestinationId": {
          "type": "string",
          "description": "Unique identifier of this destination."
        },
        "Active": {
          "type": "boolean",
          "description": "Whether this destination is active. True means messages are delivered; false means delivery is paused."
        },
        "Environment": {
          "type": "string",
          "description": "Deployment environment of the destination, indicating message criticality for support purposes. Allowed values: production, staging, development.",
          "pattern": "(^production$|^staging$|^development$|^$)"
        }
      },
      "description": "Azure IoT Hub destination configuration for an output profile.",
      "required": [
        "Host",
        "SharedAccessPolicyName",
        "SharedAccessKey",
        "ApiVersion"
      ]
    },
    "apiOutputProfileInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the output profile."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the output profile."
        },
        "MqttParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileMQTTParams"
          },
          "description": "List of MQTT destination configurations."
        },
        "RestParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileRestParams"
          },
          "description": "List of REST (webhook) destination configurations."
        },
        "AzureParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAzureMQTTParams"
          },
          "description": "List of Azure IoT Hub destination configurations."
        },
        "AWSParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAWSParams"
          },
          "description": "List of AWS IoT Core destination configurations."
        }
      },
      "description": "A configuration for device payload delivery that specifies destination endpoints and protocols. Supports webhooks (REST), MQTT, Azure IoT Hub (AMQP), and AWS IoT Core."
    },
    "apiOutputProfileMQTTParams": {
      "type": "object",
      "properties": {
        "Host": {
          "type": "string",
          "description": "MQTT broker hostname including port (e.g., machineq-dev.mqtt.net:8883). Required. Must be a valid hostname without a scheme (no 'mqtt://' or 'tcps://'). Some ports are reserved; see https://support.machineq.com/s/article/Adding-an-Output-Profile-from-the-MQ-APIs for details."
        },
        "Username": {
          "type": "string",
          "description": "Authentication username for the MQTT broker. Required."
        },
        "Password": {
          "type": "string",
          "description": "Authentication password for the MQTT broker. Required."
        },
        "Topic": {
          "type": "string",
          "description": "MQTT topic to publish to. Required. Supports ${DEVEUI} and ${FPORT} as replacement variables."
        },
        "SSL": {
          "type": "boolean",
          "description": "Whether the MQTT broker requires SSL. True means SSL is enabled; false means it is not."
        },
        "ClientId": {
          "type": "string",
          "description": "Custom MQTT client ID. Optional. Supports ${DEVEUI} and ${FPORT} as replacement variables."
        },
        "DestinationId": {
          "type": "string",
          "description": "Unique identifier of this destination."
        },
        "Active": {
          "type": "boolean",
          "description": "Whether this destination is active. True means messages are delivered; false means delivery is paused."
        },
        "Environment": {
          "type": "string",
          "description": "Deployment environment of the destination, indicating message criticality for support purposes. Allowed values: production, staging, development.",
          "pattern": "(^production$|^staging$|^development$|^$)"
        }
      },
      "description": "MQTT destination configuration for an output profile.",
      "required": [
        "Host",
        "Username",
        "Password",
        "Topic"
      ]
    },
    "apiOutputProfileRestParams": {
      "type": "object",
      "properties": {
        "URL": {
          "type": "string",
          "description": "Full URL of the REST endpoint. Required. Must be a valid HTTP URL with a scheme and optional port (e.g., https://machineq.dev.net:6565). Some ports are reserved; see https://support.machineq.com/s/article/Adding-an-Output-Profile-from-the-MQ-APIs for details."
        },
        "TokenType": {
          "type": "string",
          "description": "Authorization token type (e.g., Bearer). Optional."
        },
        "TokenValue": {
          "type": "string",
          "description": "Authorization token value. Optional."
        },
        "OutputFormat": {
          "type": "string",
          "description": "Payload output format. Required. Allowed values: simple, extended. Extended is recommended.",
          "pattern": "(^simple$|^extended$|^$)"
        },
        "DestinationId": {
          "type": "string",
          "description": "Unique identifier of this destination."
        },
        "Active": {
          "type": "boolean",
          "description": "Whether this destination is active. True means messages are delivered; false means delivery is paused."
        },
        "Environment": {
          "type": "string",
          "description": "Deployment environment of the destination, indicating message criticality for support purposes. Allowed values: production, staging, development.",
          "pattern": "(^production$|^staging$|^development$|^$)"
        }
      },
      "description": "REST (webhook) destination configuration for an output profile.",
      "required": [
        "URL",
        "OutputFormat"
      ]
    },
    "protobufNullValue": {
      "type": "string",
      "enum": [
        "NULL_VALUE"
      ],
      "default": "NULL_VALUE",
      "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value."
    },
    "apiDeviceGroupCreate": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device group. Required. Must be at least 1 character."
        },
        "DeviceList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs to include in this group. Optional."
        }
      },
      "description": "A request to create a new device group.",
      "required": [
        "Name"
      ]
    },
    "apiDeviceGroupCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created device group."
        }
      }
    },
    "apiDeviceGroupError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiDeviceGroupInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the device group."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device group."
        },
        "DeviceList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs belonging to this group."
        },
        "Devices": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceInstance"
          },
          "description": "List of full device objects belonging to this group."
        }
      },
      "description": "A logical collection of devices."
    },
    "apiDeviceGroupPatch": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the device group. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device group. Optional. Omit to leave unchanged."
        },
        "DeviceList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs to include in this group. Optional. Replaces the existing list when provided."
        }
      },
      "description": "A request to partially update a device group. Only provided fields are modified.",
      "required": [
        "Id"
      ]
    },
    "apiDeviceGroupResponse": {
      "type": "object",
      "properties": {
        "DeviceGroups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceGroupInstance"
          },
          "description": "List of device group objects. Empty if no device groups exist."
        }
      }
    },
    "apiDeviceGroupUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the device group. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device group. Required. Must be at least 1 character."
        },
        "DeviceList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs to include in this group. Replaces the existing list."
        }
      },
      "description": "A request to replace all fields of a device group.",
      "required": [
        "Id",
        "Name"
      ]
    },
    "apiGetDeviceGroupRecentResponse": {
      "type": "object",
      "properties": {
        "DeviceList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs that matched the search criteria. Empty if no devices matched."
        }
      }
    },
    "apiDeviceProfileDevicesResponse": {
      "type": "object",
      "properties": {
        "DevEUI": {
          "type": "string",
          "description": "Device EUI for which this result applies."
        },
        "Response": {
          "type": "boolean",
          "description": "Whether the operation completed without error for this device. True means the operation succeeded; false means it failed."
        },
        "Error": {
          "type": "string",
          "description": "Error message if the operation failed for this device. Empty if successful."
        }
      }
    },
    "apiDeviceProfileDevicesUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the device profile. Required."
        },
        "Devices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs to associate with this device profile."
        }
      },
      "description": "A request to associate devices with a device profile.",
      "required": [
        "Id"
      ]
    },
    "apiDeviceProfileDevicesUpdateResponse": {
      "type": "object",
      "properties": {
        "Responses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceProfileDevicesResponse"
          },
          "description": "List of per-device results indicating success or failure for each device in the request."
        }
      }
    },
    "apiDeviceProfileInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the device profile."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device profile."
        }
      },
      "description": "A configuration template on the network server that defines a device's technical capabilities and operating parameters."
    },
    "apiDeviceProfileResponse": {
      "type": "object",
      "properties": {
        "DeviceProfiles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiDeviceProfileInstance"
          },
          "description": "List of device profile objects. Empty if no device profiles exist."
        }
      }
    },
    "apiAddDevicesWithMulticastGroupRequest": {
      "type": "object",
      "properties": {
        "MulticastDevEUI": {
          "type": "string",
          "description": "Unique DevEUI of the multicast group. Required."
        },
        "Devices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device identifiers to associate with the multicast group. Maximum 10 items."
        }
      }
    },
    "apiAddDevicesWithMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "DevicesAdded": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs that were successfully associated with the multicast group."
        },
        "DevicesIgnored": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs that were not associated, for example if already associated."
        }
      }
    },
    "apiAddGatewaysWithMulticastGroupRequest": {
      "type": "object",
      "properties": {
        "MulticastDevEUI": {
          "type": "string",
          "description": "Unique DevEUI of the multicast group. Required."
        },
        "Gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway node IDs to associate with the multicast group. Maximum 10 items."
        }
      }
    },
    "apiAddGatewaysWithMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "GatewaysAdded": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway node IDs that were successfully associated with the multicast group."
        },
        "GatewaysIgnored": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway node IDs that were not associated, for example if already associated."
        }
      }
    },
    "apiCreateMulticastGroupRequest": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the multicast group. Required. Must be at least 1 character."
        },
        "MulticastDevEUI": {
          "type": "string",
          "description": "Unique DevEUI of the multicast group. Required. Must be a 16-character hexadecimal string."
        },
        "MulticastDevAddr": {
          "type": "string",
          "description": "Device address of the multicast group. Required. Must be an 8-character hexadecimal string."
        },
        "GroupType": {
          "type": "string",
          "description": "LoRaWAN class type of the multicast group. Required. Allowed values: B, C.",
          "pattern": "^(B|C)$"
        },
        "MulticastNwkSKey": {
          "type": "string",
          "description": "Network session key for the multicast group. Required. Must be a 32-character hexadecimal string."
        },
        "MulticastAppSKey": {
          "type": "string",
          "description": "Application session key for the multicast group. Required. Must be a 32-character hexadecimal string."
        },
        "DataRate": {
          "type": "integer",
          "format": "int64",
          "description": "Data rate index for the multicast group transmissions."
        },
        "Frequency": {
          "type": "integer",
          "format": "int64",
          "description": "Transmission frequency for the multicast group in hertz (Hz)."
        },
        "PingSlotPeriod": {
          "type": "integer",
          "format": "int64",
          "description": "Ping slot period for the multicast group. Required for Class B; ignored for Class C. Allowed values: 1, 2, 4, 8, 16, 32, 64, 128.",
          "pattern": "^(1|2|4|8|16|32|64|128)$|^$"
        }
      }
    },
    "apiCreateMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "Response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiDeleteMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "Response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiGetGatewaysByMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "Gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway node IDs associated with the multicast group. Empty if no gateways are associated."
        }
      }
    },
    "apiGetMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "MulticastGroup": {
          "$ref": "#/definitions/apiMulticastGroupNS",
          "description": "Multicast group object matching the requested MulticastDevEUI."
        }
      }
    },
    "apiGetMulticastGroupsResponse": {
      "type": "object",
      "properties": {
        "MulticastGroups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiMulticastGroupNS"
          },
          "description": "List of multicast group objects. Empty if no multicast groups exist."
        }
      }
    },
    "apiMulticastGroupNS": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the multicast group."
        },
        "MulticastDevEUI": {
          "type": "string",
          "description": "Unique DevEUI of the multicast group. 16-character hexadecimal string."
        },
        "MulticastDevAddr": {
          "type": "string",
          "description": "Device address of the multicast group. 8-character hexadecimal string."
        },
        "GroupType": {
          "type": "string",
          "description": "LoRaWAN class type of the multicast group. Allowed values: B, C."
        },
        "DataRate": {
          "type": "integer",
          "format": "int64",
          "description": "Data rate index for the multicast group transmissions."
        },
        "Frequency": {
          "type": "integer",
          "format": "int64",
          "description": "Transmission frequency for the multicast group in hertz (Hz)."
        },
        "PingSlotPeriod": {
          "type": "integer",
          "format": "int64",
          "description": "Ping slot period for Class B multicast groups. Allowed values: 1, 2, 4, 8, 16, 32, 64, 128."
        }
      },
      "description": "A logical collection of devices configured to receive multicast transmissions simultaneously."
    },
    "apiRemoveDevicesFromMulticastGroupRequest": {
      "type": "object",
      "properties": {
        "MulticastDevEUI": {
          "type": "string",
          "description": "Unique DevEUI of the multicast group. Required."
        },
        "Devices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs to remove from the multicast group. Maximum 10 items."
        }
      }
    },
    "apiRemoveDevicesFromMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "DevicesRemoved": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs that were successfully removed from the multicast group."
        },
        "DevicesIgnored": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of device EUIs that were not removed, for example if not previously associated."
        }
      }
    },
    "apiRemoveGatewaysFromMulticastGroupRequest": {
      "type": "object",
      "properties": {
        "MulticastDevEUI": {
          "type": "string",
          "description": "Unique DevEUI of the multicast group. Required."
        },
        "Gateways": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway node IDs to remove from the multicast group. Maximum 10 items."
        }
      }
    },
    "apiRemoveGatewaysFromMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "GatewaysRemoved": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway node IDs that were successfully removed from the multicast group."
        },
        "GatewaysIgnored": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway node IDs that were not removed, for example if not previously associated."
        }
      }
    },
    "apiUpdateMulticastGroupRequest": {
      "type": "object",
      "properties": {
        "MulticastDevEUI": {
          "type": "string",
          "description": "Unique DevEUI of the multicast group. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the multicast group. Optional. Omit to leave unchanged."
        },
        "DataRate": {
          "type": "integer",
          "format": "int64",
          "description": "Data rate index for the multicast group transmissions. Optional."
        },
        "Frequency": {
          "type": "integer",
          "format": "int64",
          "description": "Transmission frequency for the multicast group in hertz (Hz). Optional."
        }
      }
    },
    "apiUpdateMulticastGroupResponse": {
      "type": "object",
      "properties": {
        "Response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiCoordinates": {
      "type": "object",
      "properties": {
        "X": {
          "type": "string",
          "description": "Latitude of the gateway."
        },
        "Y": {
          "type": "string",
          "description": "Longitude of the gateway."
        },
        "Z": {
          "type": "string",
          "description": "Height of the gateway in meters."
        }
      }
    },
    "apiCreateGatewaysResponse": {
      "type": "object",
      "properties": {
        "Response": {
          "type": "boolean"
        },
        "MacAddress": {
          "type": "string"
        },
        "Error": {
          "type": "string"
        },
        "Id": {
          "type": "string"
        }
      }
    },
    "apiGatewayActivationInfo": {
      "type": "object",
      "properties": {
        "subscriberId": {
          "type": "string",
          "description": "Subscriber this gateway is currently assigned to."
        },
        "activated": {
          "type": "boolean",
          "title": "Is the gateway activated?"
        }
      }
    },
    "apiGatewayCreate": {
      "type": "object",
      "properties": {
        "GatewayProfile": {
          "type": "string",
          "description": "Identifier of the gateway profile, or model, to associate with this gateway. Required."
        },
        "MacAddress": {
          "type": "string",
          "description": "MAC address of the gateway. Required. Six colon-separated pairs of hexadecimal digits (e.g., a1:b2:c3:d4:e5:aa).",
          "pattern": "^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$"
        },
        "NodeId": {
          "type": "string",
          "description": "Node ID of the gateway. Required. Must be a 16-character hexadecimal string.",
          "pattern": "^([0-9A-Fa-f]{16})$"
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway. Required. Must be at least 1 character."
        },
        "AntennaGain": {
          "type": "string",
          "description": "Gain of the attached antenna. Required."
        },
        "LocationType": {
          "type": "string",
          "description": "Installation location type. Required. Allowed values: INDOOR, OUTDOOR.",
          "pattern": "^(INDOOR|OUTDOOR)$"
        },
        "GPSEnabled": {
          "type": "boolean",
          "description": "Whether GPS is enabled on the gateway. True means coordinates are determined by GPS and Coordinates should be omitted. Default: false."
        },
        "Coordinates": {
          "$ref": "#/definitions/apiCoordinates",
          "description": "Geographic location of the gateway with X (latitude), Y (longitude), and Z (height in meters). Required if GPSEnabled is false."
        },
        "CellularEnabled": {
          "type": "boolean",
          "description": "Whether cellular backhaul is enabled. True means IMEI and ICCID may optionally be provided. Default: false."
        },
        "IMEI": {
          "type": "string",
          "description": "IMEI of the cellular modem. Optional when CellularEnabled is true. 15-digit number; multiple entries separated by commas (e.g., \"123451234512345,123451234512345\").",
          "pattern": "^[0-9]{15}(,[0-9]{15})*$"
        },
        "ICCID": {
          "type": "string",
          "description": "ICCID of the SIM card. Optional when CellularEnabled is true. Must be a 20-digit number.",
          "pattern": "^[0-9]{20}$"
        }
      },
      "description": "A request to create a new gateway.",
      "required": [
        "GatewayProfile",
        "MacAddress",
        "NodeId",
        "Name",
        "AntennaGain",
        "LocationType"
      ]
    },
    "apiGatewayCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created gateway."
        }
      }
    },
    "apiGatewayDevice": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the device."
        },
        "DevEUI": {
          "type": "string",
          "description": "Extended Unique Identifier of the device. 16-character hexadecimal string."
        },
        "Statistics": {
          "$ref": "#/definitions/apiDeviceStatistics",
          "description": "Performance and connectivity statistics for the device. Null if the device has never communicated."
        },
        "LastUplink": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last uplink received from the device in RFC 3339 format. Null if no uplink has been received."
        }
      }
    },
    "apiGatewayDeviceResponse": {
      "type": "object",
      "properties": {
        "Devices": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayDevice"
          },
          "description": "List of devices that communicated through this gateway. Empty if no devices were seen."
        }
      }
    },
    "apiGatewayError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiGatewayEvent": {
      "type": "object",
      "properties": {
        "Time": {
          "type": "string",
          "format": "date-time",
          "description": "RFC3339 format"
        },
        "Field": {
          "$ref": "#/definitions/apiGatewayEventField",
          "description": "Which gateway field experienced a change in status?"
        },
        "OldValue": {
          "type": "string",
          "description": "Old value of field, if present."
        },
        "NewValue": {
          "type": "string",
          "description": "New value of field, if present."
        }
      }
    },
    "apiGatewayEventField": {
      "type": "string",
      "enum": [
        "UNKNOWN",
        "BACKHAUL",
        "NS_CONNECT",
        "ONLINE_STATUS",
        "PACKET_FORWARDER",
        "REBOOT_TIME",
        "BACKHAUL_CONNECTED",
        "BACKHAUL_DISCONNECTED",
        "PACKET_FORWARDER_CONNECTED",
        "PACKET_FORWARDER_DISCONNECTED",
        "PUSH_RF_CONFIG"
      ],
      "default": "UNKNOWN"
    },
    "apiGatewayGpsSyncStatus": {
      "type": "string",
      "enum": [
        "LOCKING_OR_NO_SIGNAL",
        "LOCKED"
      ],
      "default": "LOCKING_OR_NO_SIGNAL"
    },
    "apiGatewayInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the gateway."
        },
        "GatewayProfile": {
          "type": "string",
          "description": "Identifier of the gateway profile, or model, associated with this gateway."
        },
        "MacAddress": {
          "type": "string",
          "description": "MAC address of the gateway."
        },
        "NodeId": {
          "type": "string",
          "description": "Node ID of the gateway. 16-character hexadecimal string."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway."
        },
        "AntennaGain": {
          "type": "string",
          "description": "Gain of the attached antenna."
        },
        "LocationType": {
          "type": "string",
          "description": "Installation location type. Allowed values: INDOOR, OUTDOOR."
        },
        "GPSEnabled": {
          "type": "boolean",
          "description": "Whether GPS is enabled on the gateway. True means coordinates are determined by GPS; false means coordinates are manually set."
        },
        "Coordinates": {
          "$ref": "#/definitions/apiCoordinates",
          "description": "Geographic location of the gateway with X (latitude), Y (longitude), and Z (height in meters)."
        },
        "CellularEnabled": {
          "type": "boolean",
          "description": "Whether cellular backhaul is enabled. True means the gateway uses a cellular connection."
        },
        "IMEI": {
          "type": "string",
          "description": "IMEI of the cellular modem for backhaul connectivity."
        },
        "ICCID": {
          "type": "string",
          "description": "ICCID of the SIM card for cellular backhaul."
        },
        "CreatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the gateway was created in RFC 3339 format."
        },
        "UpdatedAt": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the gateway was last updated in RFC 3339 format."
        },
        "UpdatedBy": {
          "type": "string",
          "description": "Identifier of the user who last updated the gateway."
        },
        "Manufacturer": {
          "$ref": "#/definitions/machineqapiGatewayManufacturer",
          "description": "Manufacturer of the gateway. Reserved for future use."
        },
        "Model": {
          "type": "string",
          "description": "Model designation reported by the gateway."
        },
        "Statistics": {
          "$ref": "#/definitions/apiGatewayStatistics",
          "description": "Health, connectivity, and performance statistics for the gateway. Null if the gateway has never connected to the network."
        },
        "RfRegion": {
          "type": "string",
          "description": "Identifier of the RF region associated with this gateway."
        }
      },
      "description": "A networking device that bridges devices and a central network server."
    },
    "apiGatewayIsmBand": {
      "type": "string",
      "enum": [
        "EU868",
        "EU433",
        "CN779",
        "AS923",
        "KR920",
        "SG920",
        "TW920",
        "US915",
        "AU915",
        "CN470",
        "IN865",
        "RU864"
      ],
      "default": "EU868"
    },
    "apiGatewayLocationType": {
      "type": "string",
      "enum": [
        "LOCATION_UNKNOWN",
        "LOCATION_ADMINISTRATIVELY",
        "LOCATION_GPS"
      ],
      "default": "LOCATION_UNKNOWN"
    },
    "apiGatewayPatch": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier or Node ID of the gateway. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway. Optional. Omit to leave unchanged."
        },
        "AntennaGain": {
          "type": "string",
          "description": "Gain of the attached antenna. Optional. Omit to leave unchanged."
        },
        "LocationType": {
          "type": "string",
          "description": "Installation location type. Optional. Allowed values: INDOOR, OUTDOOR. Omit to leave unchanged.",
          "pattern": "^(INDOOR|OUTDOOR)$"
        },
        "Coordinates": {
          "$ref": "#/definitions/apiCoordinates",
          "description": "Geographic location of the gateway with X (latitude), Y (longitude), and Z (height in meters). Required if GPSEnabled is false."
        },
        "GatewayProfile": {
          "type": "string",
          "description": "Identifier of the gateway profile, or model, to associate with this gateway. Optional. Omit to leave unchanged."
        },
        "GPSEnabled": {
          "type": "boolean",
          "description": "Whether GPS is enabled on the gateway. True means coordinates are determined by GPS and Coordinates should be omitted."
        },
        "CellularEnabled": {
          "type": "boolean",
          "description": "Whether cellular backhaul is enabled. True means IMEI and ICCID may optionally be provided."
        },
        "IMEI": {
          "type": "string",
          "description": "IMEI of the cellular modem. Optional when CellularEnabled is true. 15-digit number; multiple entries separated by commas.",
          "pattern": "^[0-9]{15}(,[0-9]{15})*$"
        },
        "ICCID": {
          "type": "string",
          "description": "ICCID of the SIM card. Optional when CellularEnabled is true. Must be a 20-digit number.",
          "pattern": "^[0-9]{20}$"
        },
        "RfRegion": {
          "type": "string",
          "description": "Identifier of the RF region to associate with this gateway. Optional. Retrieve available values from GET /v1/rfregions."
        }
      },
      "description": "A request to partially update a gateway. Only provided fields are modified.",
      "required": [
        "Id"
      ]
    },
    "apiGatewayStatistics": {
      "type": "object",
      "properties": {
        "ConnectionState": {
          "$ref": "#/definitions/machineqapiGatewayConnectionState",
          "description": "Current connection state of the gateway."
        },
        "HealthState": {
          "$ref": "#/definitions/machineqapiGatewayHealthState",
          "description": "Current health state of the gateway."
        },
        "GpsSyncStatus": {
          "$ref": "#/definitions/apiGatewayGpsSyncStatus",
          "description": "GPS synchronization status of the gateway."
        },
        "TimeSyncStatus": {
          "$ref": "#/definitions/apiGatewayTimeSyncStatus",
          "description": "Time synchronization source of the gateway."
        },
        "LastReportingTime": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last status report from the gateway in RFC 3339 format. Null if the gateway has never reported."
        },
        "LastUplinkTime": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last uplink forwarded by the gateway in RFC 3339 format. Null if no uplink has been forwarded."
        },
        "LastDownlinkTime": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last downlink transmitted by the gateway in RFC 3339 format. Null if no downlink has been transmitted."
        },
        "LocationType": {
          "$ref": "#/definitions/apiGatewayLocationType",
          "description": "Source of the gateway's location coordinates."
        },
        "RfRegionID": {
          "type": "string",
          "description": "Identifier of the RF region reported by the gateway."
        },
        "IsRX2Activated": {
          "type": "boolean",
          "description": "Whether the RX2 receive window is activated. True means RX2 is in use."
        },
        "IsmBand": {
          "$ref": "#/definitions/apiGatewayIsmBand",
          "description": "ISM frequency band the gateway operates on."
        },
        "LastGeoLatitude": {
          "type": "number",
          "format": "float",
          "description": "Last reported GPS latitude of the gateway. Only valid when LastGeoValid is true."
        },
        "LastGeoLongitude": {
          "type": "number",
          "format": "float",
          "description": "Last reported GPS longitude of the gateway. Only valid when LastGeoValid is true."
        },
        "LastGeoAltitude": {
          "type": "number",
          "format": "float",
          "description": "Last reported GPS altitude of the gateway in meters."
        },
        "SoftwareVersion": {
          "type": "string",
          "description": "Current firmware or software version running on the gateway."
        },
        "UplinkPacketPerHour": {
          "type": "integer",
          "format": "int32",
          "description": "Average number of uplink packets forwarded per hour."
        },
        "DownlinkPacketPerHour": {
          "type": "integer",
          "format": "int32",
          "description": "Average number of downlink packets transmitted per hour."
        },
        "LastSystemReboot": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the last system reboot in RFC 3339 format."
        },
        "InterfaceStatistics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiInterfaceStatistics"
          },
          "description": "List of network interface statistics for the gateway."
        },
        "CPUPercent": {
          "type": "integer",
          "format": "int32",
          "description": "CPU utilization as a percentage.",
          "title": "New (GMS) statistics start here:"
        },
        "FreeMemKB": {
          "type": "integer",
          "format": "int32",
          "description": "Available free memory in kilobytes."
        },
        "CellRSSI": {
          "type": "integer",
          "format": "int32",
          "description": "Cellular signal strength in decibel-milliwatts (dBm)."
        },
        "CellProvider": {
          "type": "string",
          "description": "Name of the cellular service provider (e.g., ATT, Verizon)."
        },
        "WiFiSSID": {
          "type": "string",
          "description": "SSID of the connected Wi-Fi network."
        },
        "RadioError": {
          "type": "string",
          "description": "Most recent LoRa radio error code. Empty if no error."
        },
        "TxPower": {
          "type": "integer",
          "format": "int32",
          "description": "Current LoRa radio transmit power in decibel-milliwatts (dBm)."
        },
        "VSWR": {
          "type": "integer",
          "format": "int32",
          "description": "Current LoRa voltage standing wave ratio (VSWR) in decibels (dB). Available only on supported hardware."
        },
        "LastGeoValid": {
          "type": "boolean",
          "description": "Whether the last reported GPS coordinates are valid. True means LastGeoLatitude and LastGeoLongitude can be used; false means they should be ignored."
        },
        "SecureBackhaulEnabled": {
          "type": "boolean",
          "description": "Whether secure backhaul (SBH) is enabled. True means SBH is configured on the gateway."
        },
        "SecureBackhaulActive": {
          "type": "boolean",
          "description": "Whether secure backhaul (SBH) is currently active. True means the SBH tunnel is established."
        },
        "Model": {
          "type": "string",
          "description": "Model designation reported by the gateway manufacturer."
        },
        "LrrCNX": {
          "type": "boolean",
          "description": "Whether the gateway can reach the network server. True means the connection is established."
        }
      }
    },
    "apiGatewayTimeSyncStatus": {
      "type": "string",
      "enum": [
        "LOCAL",
        "NTP",
        "GPS"
      ],
      "default": "LOCAL"
    },
    "apiGatewayUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier or Node ID of the gateway. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway. Required. Must be at least 1 character."
        },
        "AntennaGain": {
          "type": "string",
          "description": "Gain of the attached antenna. Required."
        },
        "LocationType": {
          "type": "string",
          "description": "Installation location type. Required. Allowed values: INDOOR, OUTDOOR.",
          "pattern": "^(INDOOR|OUTDOOR)$"
        },
        "Coordinates": {
          "$ref": "#/definitions/apiCoordinates",
          "description": "Geographic location of the gateway with X (latitude), Y (longitude), and Z (height in meters). Required if GPSEnabled is false."
        },
        "GatewayProfile": {
          "type": "string",
          "description": "Identifier of the gateway profile, or model, to associate with this gateway. Required."
        },
        "GPSEnabled": {
          "type": "boolean",
          "description": "Whether GPS is enabled on the gateway. True means coordinates are determined by GPS and Coordinates should be omitted."
        },
        "CellularEnabled": {
          "type": "boolean",
          "description": "Whether cellular backhaul is enabled. True means IMEI and ICCID may optionally be provided."
        },
        "IMEI": {
          "type": "string",
          "description": "IMEI of the cellular modem. Optional when CellularEnabled is true. 15-digit number; multiple entries separated by commas.",
          "pattern": "^[0-9]{15}(,[0-9]{15})*$"
        },
        "ICCID": {
          "type": "string",
          "description": "ICCID of the SIM card. Optional when CellularEnabled is true. Must be a 20-digit number.",
          "pattern": "^[0-9]{20}$"
        }
      },
      "description": "A request to replace all mutable fields of a gateway.",
      "required": [
        "Id",
        "Name",
        "AntennaGain",
        "LocationType",
        "GatewayProfile"
      ]
    },
    "apiGatewaysConnectionResponse": {
      "type": "object",
      "properties": {
        "NeverConnected": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateways that have never connected to the network."
        },
        "Disconnected": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateways that are currently disconnected."
        },
        "Connected": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateways that are currently connected."
        }
      }
    },
    "apiGatewaysHealthResponse": {
      "type": "object",
      "properties": {
        "Initializing": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateways that are currently initializing."
        },
        "ConnectError": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateways with a backhaul connection error."
        },
        "RfError": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateways with an RF radio error."
        },
        "Active": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateways that are active and healthy."
        }
      }
    },
    "apiInterfaceState": {
      "type": "string",
      "enum": [
        "IF_UNKNOWN",
        "DOWN",
        "UP_LINKDOWN",
        "UP_NOSIGNAL",
        "UP_NOIP",
        "UP_NETWORKDOWN",
        "UP_RUNNING",
        "UP_RUNNING_USED"
      ],
      "default": "IF_UNKNOWN"
    },
    "apiInterfaceStatistics": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string"
        },
        "State": {
          "$ref": "#/definitions/apiInterfaceState"
        },
        "Type": {
          "type": "string"
        }
      }
    },
    "machineqapiGatewayConnectionState": {
      "type": "string",
      "enum": [
        "NEVERCNX",
        "CNX",
        "DISC",
        "CNX_UNKNOWN"
      ],
      "default": "NEVERCNX"
    },
    "machineqapiGatewayHealthState": {
      "type": "string",
      "enum": [
        "INIT",
        "ACTIVE",
        "BACKHAUL_CNX_ERROR",
        "RF_ERROR",
        "HEALTH_UNKNOWN"
      ],
      "default": "INIT"
    },
    "machineqapiGatewayManufacturer": {
      "type": "string",
      "enum": [
        "UNKNOWN_MFR",
        "COMCAST",
        "TEKTELIC",
        "MULTITECH"
      ],
      "default": "UNKNOWN_MFR"
    },
    "machineqapiGatewayResponse": {
      "type": "object",
      "properties": {
        "Gateways": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of gateway objects. Empty if no gateways exist."
        }
      }
    },
    "machineqapiGetGatewayEventsResponse": {
      "type": "object",
      "properties": {
        "NodeID": {
          "type": "string",
          "description": "Unique Node ID of the gateway. 16-character hexadecimal string."
        },
        "Events": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayEvent"
          },
          "description": "List of historical events for the gateway. Empty if no events exist in the time range."
        }
      }
    },
    "apiGatewayGroupCreate": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway group. Required. Must be at least 1 character."
        },
        "GatewayList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway identifiers to include in this group. Optional."
        }
      },
      "description": "A request to create a new gateway group.",
      "required": [
        "Name"
      ]
    },
    "apiGatewayGroupCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created gateway group."
        }
      }
    },
    "apiGatewayGroupError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiGatewayGroupInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the gateway group."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway group."
        },
        "GatewayList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway identifiers belonging to this group."
        },
        "Gateways": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayInstance"
          },
          "description": "List of full gateway objects belonging to this group."
        }
      },
      "description": "A logical collection of gateways."
    },
    "apiGatewayGroupPatch": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the gateway group. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway group. Optional. Omit to leave unchanged."
        },
        "GatewayList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway identifiers to include in this group. Optional. Replaces the existing list when provided."
        }
      },
      "description": "A request to partially update a gateway group. Only provided fields are modified.",
      "required": [
        "Id"
      ]
    },
    "apiGatewayGroupResponse": {
      "type": "object",
      "properties": {
        "GatewayGroups": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayGroupInstance"
          },
          "description": "List of gateway group objects. Empty if no gateway groups exist."
        }
      }
    },
    "apiGatewayGroupUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the gateway group. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway group. Required. Must be at least 1 character."
        },
        "GatewayList": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway identifiers to include in this group. Replaces the existing list."
        }
      },
      "description": "A request to replace all fields of a gateway group.",
      "required": [
        "Id",
        "Name"
      ]
    },
    "apiGatewayProfileInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the gateway profile."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the gateway profile."
        },
        "Description": {
          "type": "string",
          "description": "Detailed description of the gateway profile. Required. Must be at least 1 character."
        }
      },
      "description": "A configuration template on the network server that defines the operational parameters, capabilities, and settings of a gateway model."
    },
    "apiGatewayProfileResponse": {
      "type": "object",
      "properties": {
        "GatewayProfiles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayProfileInstance"
          },
          "description": "List of gateway profile objects. Empty if no gateway profiles exist."
        }
      }
    },
    "apiAckFilter": {
      "type": "string",
      "enum": [
        "NOACKFILTER",
        "ACKFALSE",
        "ACKTRUE"
      ],
      "default": "NOACKFILTER"
    },
    "apiActivationFilter": {
      "type": "string",
      "enum": [
        "NOACTIVATIONFILTER",
        "JOINREQUEST",
        "JOINACCEPT"
      ],
      "default": "NOACTIVATIONFILTER"
    },
    "apiGatewayList": {
      "type": "object",
      "properties": {
        "Gateway": {
          "type": "string",
          "description": "Deprecated. Gateway identifier. Use GatewayNodeID instead."
        },
        "RSSI": {
          "type": "string",
          "description": "Received Signal Strength Indicator (RSSI) reported by this gateway in decibel-milliwatts (dBm)."
        },
        "SNR": {
          "type": "string",
          "description": "Signal-to-Noise Ratio (SNR) reported by this gateway in decibels (dB)."
        },
        "ESP": {
          "type": "string",
          "description": "Equivalent Signal Power (ESP) reported by this gateway in decibel-milliwatts (dBm)."
        },
        "Time": {
          "type": "string",
          "description": "Timestamp when this gateway received the transmission in RFC 3339 format."
        },
        "Unowned": {
          "type": "boolean",
          "description": "Whether this gateway is owned by a different subscriber. True means the gateway belongs to another subscriber; false or omitted means it belongs to the requesting subscriber."
        },
        "SubscriberID": {
          "type": "string",
          "description": "Subscriber ID of the gateway owner. Only present when the gateway is owned by a different subscriber."
        },
        "GatewayNodeID": {
          "type": "string",
          "description": "Node ID of this gateway."
        }
      },
      "description": "Signal quality details for a gateway that received a transmission."
    },
    "apiLateFilter": {
      "type": "string",
      "enum": [
        "NOLATEFILTER",
        "LATEFALSE",
        "LATETRUE"
      ],
      "default": "NOLATEFILTER"
    },
    "apiLogFrameFilter": {
      "type": "object",
      "properties": {
        "Stream": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiStreamFilter"
          },
          "description": "Filters by transmission direction. Allowed values: UPSTREAM, DOWNSTREAM. Optional."
        },
        "MessageType": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiMessageTypeFilter"
          },
          "description": "Filters by LoRaWAN message type. Allowed values: MAC, MACDATA, DATA, NONE. Optional."
        },
        "Late": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiLateFilter"
          },
          "description": "Filters by whether packets were marked as late. Allowed values: LATEFALSE, LATETRUE. Optional."
        },
        "Activation": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiActivationFilter"
          },
          "description": "Filters by activation message type. Allowed values: JOINREQUEST, JOINACCEPT. Optional."
        },
        "Ack": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiAckFilter"
          },
          "description": "Filters by whether the message contains an acknowledgment. Allowed values: ACKFALSE, ACKTRUE. Optional."
        }
      }
    },
    "apiLogInstance": {
      "type": "object",
      "properties": {
        "Timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Time the log entry was recorded in RFC 3339 format."
        },
        "DevEUI": {
          "type": "string",
          "description": "Device EUI associated with this log entry. 16-character hexadecimal string."
        },
        "DevAddr": {
          "type": "string",
          "description": "Device address assigned during activation. 8-character hexadecimal string."
        },
        "Fport": {
          "type": "string",
          "description": "LoRaWAN FPort value indicating the application port number used for this frame."
        },
        "FCnt": {
          "type": "string",
          "description": "LoRaWAN frame counter value for this transmission."
        },
        "MessageType": {
          "type": "string",
          "description": "Numeric code representing the LoRaWAN message type."
        },
        "MessageTypeText": {
          "type": "string",
          "description": "Human-readable label for the LoRaWAN message type."
        },
        "PayloadHex": {
          "type": "string",
          "description": "Raw application payload encoded as a hexadecimal string."
        },
        "MICHex": {
          "type": "string",
          "description": "Message Integrity Code (MIC) encoded as a hexadecimal string."
        },
        "PrimaryGatewayRSSI": {
          "type": "string",
          "description": "Received Signal Strength Indicator (RSSI) reported by the primary gateway in decibel-milliwatts (dBm)."
        },
        "PrimaryGatewaySNR": {
          "type": "string",
          "description": "Signal-to-Noise Ratio (SNR) reported by the primary gateway in decibels (dB)."
        },
        "PrimaryGatewayESP": {
          "type": "string",
          "description": "Equivalent Signal Power (ESP) reported by the primary gateway in decibel-milliwatts (dBm)."
        },
        "SpreadingFactor": {
          "type": "string",
          "description": "LoRa spreading factor used for the transmission."
        },
        "Airtime": {
          "type": "string",
          "description": "Time on air for the transmission in seconds."
        },
        "SubBand": {
          "type": "string",
          "description": "Sub-band used for the transmission."
        },
        "Channel": {
          "type": "string",
          "description": "Radio channel used for the transmission."
        },
        "GatewayID": {
          "type": "string",
          "description": "Deprecated. Primary gateway ID that received the transmission. Use GatewayList instead."
        },
        "GatewayLatitide": {
          "type": "string",
          "description": "Latitude of the primary gateway in decimal degrees."
        },
        "GatewayLongitude": {
          "type": "string",
          "description": "Longitude of the primary gateway in decimal degrees."
        },
        "GatewayCount": {
          "type": "string",
          "description": "Number of gateways that received this transmission."
        },
        "GatewayList": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiGatewayList"
          },
          "description": "List of gateways that received this transmission, with signal quality details for each."
        },
        "DeviceLatitude": {
          "type": "string",
          "description": "Estimated latitude of the device in decimal degrees. Empty if location is unavailable."
        },
        "DeviceLongitude": {
          "type": "string",
          "description": "Estimated longitude of the device in decimal degrees. Empty if location is unavailable."
        },
        "DeviceLocationRadius": {
          "type": "string",
          "description": "Estimated accuracy radius of the device location in meters. Empty if location is unavailable."
        },
        "MacCommands": {
          "type": "string",
          "description": "Raw MAC commands included in the frame as a hexadecimal string. Empty if no MAC commands are present."
        },
        "DecodedMacCommands": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of human-readable decoded MAC command strings. Empty if no MAC commands are present."
        },
        "ADRbit": {
          "type": "string",
          "description": "Adaptive Data Rate (ADR) bit value from the frame header. A value of 1 means ADR is enabled; 0 means ADR is disabled."
        },
        "ADRAckReq": {
          "type": "string",
          "description": "ADR acknowledgment request bit value. Indicates whether the device is requesting an ADR acknowledgment from the network."
        },
        "AckRequested": {
          "type": "string",
          "description": "Indicates whether an acknowledgment was requested for this frame."
        },
        "ACKbit": {
          "type": "string",
          "description": "Acknowledgment bit value from the frame header. Indicates whether this frame acknowledges a previously received frame."
        },
        "FPending": {
          "type": "string",
          "description": "Frame pending bit value. Indicates whether additional data is pending from the network server for the device."
        },
        "Late": {
          "type": "string",
          "description": "Indicates whether the packet was marked as late by the network server."
        },
        "DevNonce": {
          "type": "string",
          "description": "Device nonce value used during the join procedure. Only present for join-request messages."
        },
        "JoinEUI": {
          "type": "string",
          "description": "Join EUI (AppEUI) used during the join procedure. Only present for join-request messages. 16-character hexadecimal string."
        },
        "GatewayUnowned": {
          "type": "boolean",
          "description": "Whether the primary gateway is owned by a different subscriber. True means the gateway belongs to another subscriber; false or omitted means the gateway belongs to the requesting subscriber."
        },
        "GatewaySubscriberID": {
          "type": "string",
          "description": "Subscriber ID of the primary gateway owner. Only present when the gateway is owned by a different subscriber."
        },
        "GatewayNodeID": {
          "type": "string",
          "description": "Node ID of the primary gateway that received this transmission."
        },
        "PayloadDecoded": {
          "type": "object",
          "description": "Decoded application payload from the uplink message. Devices using a LoRa-compliant payload decoder return a 'data' object with the decoded payload, a 'warnings' array with any decoding warnings, and an 'errors' array if decoding fails (when present, 'data' and 'warnings' are omitted). Devices not using a LoRa-compliant decoder return a device-specific structure with no standard top-level fields. Successful decoding example: {\"data\": {\"battery\": 100, \"temperature\": 26.8}}. Failed decoding example: {\"errors\": [\"Invalid payload format\"]}."
        },
        "Multicast": {
          "type": "boolean",
          "description": "Whether this log entry represents a multicast downlink transmission. True means the downlink was sent to a multicast group; omitted for uplink entries or unicast downlinks."
        },
        "GatewayTxSuccess": {
          "type": "boolean",
          "description": "Whether the gateway transmitted this downlink over the air. True means the gateway transmitted successfully; false means the transmission failed. Omitted for uplink entries and join accepts."
        },
        "GatewayTxDetails": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Per-window detail strings describing the gateway transmission outcome (for example \"RX1: LRC selected RX2\" or \"RX2: duty cycle constraint detected by LRR\"). Empty when the network server provides no detail or the entry is not a data downlink."
        }
      },
      "description": "A recorded event in the lifecycle of a device, capturing data transmissions and operational activities between the device and the network."
    },
    "apiLogResponse": {
      "type": "object",
      "properties": {
        "Logs": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiLogInstance"
          },
          "description": "List of log entry objects. Empty if no logs match the filter criteria."
        }
      }
    },
    "apiMessageTypeFilter": {
      "type": "string",
      "enum": [
        "NOMESSAGETYPEFILTER",
        "MAC",
        "MACDATA",
        "DATA",
        "NONE"
      ],
      "default": "NOMESSAGETYPEFILTER"
    },
    "apiStreamFilter": {
      "type": "string",
      "enum": [
        "NOSTREAMFILTER",
        "UPSTREAM",
        "DOWNSTREAM"
      ],
      "default": "NOSTREAMFILTER"
    },
    "apiOutputProfileCreate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the output profile. Optional. Auto-generated if omitted."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the output profile. Required. Must be at least 1 character."
        },
        "MqttParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileMQTTParams"
          },
          "description": "List of MQTT destination configurations. Optional."
        },
        "RestParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileRestParams"
          },
          "description": "List of REST (webhook) destination configurations. Optional."
        },
        "AzureParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAzureMQTTParams"
          },
          "description": "List of Azure IoT Hub destination configurations. Optional."
        },
        "AWSParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAWSParams"
          },
          "description": "List of AWS IoT Core destination configurations. Optional."
        }
      },
      "description": "A request to create a new output profile.",
      "required": [
        "Name"
      ]
    },
    "apiOutputProfileCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created output profile."
        }
      }
    },
    "apiOutputProfileDevicesResponse": {
      "type": "object",
      "properties": {
        "DevEUI": {
          "type": "string",
          "description": "Device EUI for which this result applies."
        },
        "Response": {
          "type": "boolean",
          "description": "Whether the operation completed without error for this device. True means the operation succeeded; false means it failed."
        },
        "Error": {
          "type": "string",
          "description": "Error message if the operation failed for this device. Empty if successful."
        }
      }
    },
    "apiOutputProfileDevicesUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the output profile. Required."
        },
        "Devices": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of devices to associate with this output profile. All listed devices have their output profile updated to this one."
        }
      },
      "description": "A request to associate devices with an output profile.",
      "required": [
        "Id"
      ]
    },
    "apiOutputProfileDevicesUpdateResponse": {
      "type": "object",
      "properties": {
        "Responses": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileDevicesResponse"
          },
          "description": "List of per-device results indicating success or failure for each device in the request."
        }
      }
    },
    "apiOutputProfileError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiOutputProfilePatch": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the output profile. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the output profile. Optional. Omit to leave unchanged."
        },
        "MqttParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileMQTTParams"
          },
          "description": "List of MQTT destination configurations. Optional. Replaces existing MQTT destinations when provided."
        },
        "RestParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileRestParams"
          },
          "description": "List of REST (webhook) destination configurations. Optional. Replaces existing REST destinations when provided."
        },
        "AzureParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAzureMQTTParams"
          },
          "description": "List of Azure IoT Hub destination configurations. Optional. Replaces existing Azure destinations when provided."
        },
        "AWSParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAWSParams"
          },
          "description": "List of AWS IoT Core destination configurations. Optional. Replaces existing AWS destinations when provided."
        }
      },
      "description": "A request to partially update an output profile. Only provided fields are modified.",
      "required": [
        "Id"
      ]
    },
    "apiOutputProfileResponse": {
      "type": "object",
      "properties": {
        "OutputProfiles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileInstance"
          },
          "description": "List of output profile objects. Empty if no output profiles exist."
        }
      }
    },
    "apiOutputProfileUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the output profile. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the output profile. Required. Must be at least 1 character."
        },
        "MqttParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileMQTTParams"
          },
          "description": "List of MQTT destination configurations. Replaces existing MQTT destinations."
        },
        "RestParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileRestParams"
          },
          "description": "List of REST (webhook) destination configurations. Replaces existing REST destinations."
        },
        "AzureParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAzureMQTTParams"
          },
          "description": "List of Azure IoT Hub destination configurations. Replaces existing Azure destinations."
        },
        "AWSParams": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiOutputProfileAWSParams"
          },
          "description": "List of AWS IoT Core destination configurations. Replaces existing AWS destinations."
        }
      },
      "description": "A request to replace all fields of an output profile.",
      "required": [
        "Id",
        "Name"
      ]
    },
    "apiListRFRegionsResponse": {
      "type": "object",
      "properties": {
        "RfRegions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiRFRegionInstance"
          },
          "description": "List of RF region objects. Empty if no RF regions exist."
        }
      }
    },
    "apiRFRegionInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the RF region."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the RF region."
        },
        "GatewayModels": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of gateway model identifiers compatible with this RF region."
        }
      },
      "description": "A predefined set of frequency bands, technical parameters, and regulatory rules governing device and gateway communication in a geographic area."
    },
    "apiRoleCreate": {
      "type": "object",
      "properties": {
        "Name": {
          "type": "string",
          "description": "Human-readable name of the role. Required. Must be at least 1 character."
        },
        "Device": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for device resources. Optional."
        },
        "User": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for user resources. Optional."
        },
        "Gateway": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for gateway resources. Optional."
        },
        "Users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of user identifiers to assign to this role. Optional."
        },
        "Applications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of application identifiers to assign to this role. Optional."
        }
      },
      "description": "A request to create a new role.",
      "required": [
        "Name"
      ]
    },
    "apiRoleCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created role."
        }
      }
    },
    "apiRoleError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiRoleInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the role."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the role."
        },
        "Device": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for device resources."
        },
        "User": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for user resources."
        },
        "Gateway": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for gateway resources."
        },
        "Users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of user identifiers assigned to this role."
        },
        "Applications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of application identifiers assigned to this role."
        }
      },
      "description": "A set of CRUD permissions that a user or application has for interacting with devices, users, and gateways."
    },
    "apiRolePatch": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the role. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the role. Optional. Omit to leave unchanged."
        },
        "Device": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for device resources. Optional. Omit to leave unchanged."
        },
        "User": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for user resources. Optional. Omit to leave unchanged."
        },
        "Gateway": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for gateway resources. Optional. Omit to leave unchanged."
        },
        "Users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of user identifiers to assign to this role. Optional. Replaces the existing list when provided."
        },
        "Applications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of application identifiers to assign to this role. Optional. Replaces the existing list when provided."
        }
      },
      "description": "A request to partially update a role. Only provided fields are modified.",
      "required": [
        "Id"
      ]
    },
    "apiRoleResponse": {
      "type": "object",
      "properties": {
        "Roles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiRoleInstance"
          },
          "description": "List of role objects. Empty if no roles exist."
        }
      }
    },
    "apiRoleUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the role. Required."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the role. Required. Must be at least 1 character."
        },
        "Device": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for device resources."
        },
        "User": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for user resources."
        },
        "Gateway": {
          "$ref": "#/definitions/apiPermissionObject",
          "description": "CRUD permissions for gateway resources."
        },
        "Users": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of user identifiers to assign to this role. Replaces the existing list."
        },
        "Applications": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of application identifiers to assign to this role. Replaces the existing list."
        }
      },
      "description": "A request to replace all fields of a role.",
      "required": [
        "Id",
        "Name"
      ]
    },
    "apiServiceProfileInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the service profile."
        },
        "Name": {
          "type": "string",
          "description": "Human-readable name of the service profile."
        },
        "Description": {
          "type": "string",
          "description": "Brief description of the service profile's purpose and configuration."
        }
      },
      "description": "A set of connectivity parameters that govern how a device communicates with a gateway, including uplink and downlink frame settings, network routing, and adaptive data rate (ADR) configuration."
    },
    "apiServiceProfilesResponse": {
      "type": "object",
      "properties": {
        "ServiceProfiles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiServiceProfileInstance"
          },
          "description": "List of service profile objects. Empty if no service profiles exist."
        }
      }
    },
    "apiUserCreate": {
      "type": "object",
      "properties": {
        "Email": {
          "type": "string",
          "description": "Email address of the user. Required. Must be a valid email in RFC 5322 format.",
          "pattern": "^[A-Za-z0-9._+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,63}$"
        },
        "Username": {
          "type": "string",
          "description": "Login username for the user. Required. Must not have leading or trailing whitespace."
        },
        "Password": {
          "type": "string",
          "description": "Password for the user. Required. Must be at least 12 characters long and include at least 3 of the following 4 character types: lowercase letter, uppercase letter, number, or special character (such as !@#$%^&*). The new password cannot match any password in the user's password history."
        },
        "FirstName": {
          "type": "string",
          "description": "First name of the user. Required."
        },
        "LastName": {
          "type": "string",
          "description": "Last name of the user. Required."
        },
        "PhoneNumber": {
          "type": "string",
          "description": "Phone number of the user. Required."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role identifiers to assign to this user. Optional."
        }
      },
      "description": "A request to create a new user.",
      "required": [
        "Email",
        "Username",
        "Password",
        "FirstName",
        "LastName",
        "PhoneNumber"
      ]
    },
    "apiUserCreateResponse": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the created user."
        }
      }
    },
    "apiUserError": {
      "type": "object",
      "properties": {
        "response": {
          "type": "boolean",
          "description": "Whether the operation completed without error. True means the operation succeeded; false means it failed."
        }
      }
    },
    "apiUserInstance": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the user."
        },
        "Email": {
          "type": "string",
          "description": "Email address of the user."
        },
        "Username": {
          "type": "string",
          "description": "Login username of the user."
        },
        "FirstName": {
          "type": "string",
          "description": "First name of the user."
        },
        "LastName": {
          "type": "string",
          "description": "Last name of the user."
        },
        "PhoneNumber": {
          "type": "string",
          "description": "Phone number of the user."
        },
        "PasswordHash": {
          "type": "string",
          "description": "Hashed password of the user. Not intended for direct use."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role identifiers assigned to this user."
        },
        "AdminRoles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of administrative role identifiers assigned to this user."
        },
        "SubscriberId": {
          "type": "string",
          "description": "Identifier of the subscriber this user belongs to."
        }
      },
      "description": "An account holder in the system with identifying information, assigned roles, and subscriber association."
    },
    "apiUserPatch": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the user. Required."
        },
        "Email": {
          "type": "string",
          "description": "Email address of the user. Optional. Must be a valid email in RFC 5322 format. Null to leave unchanged.",
          "pattern": "^[A-Za-z0-9._+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,63}$|^.{0}$"
        },
        "FirstName": {
          "type": "string",
          "description": "First name of the user. Optional. Null to leave unchanged."
        },
        "LastName": {
          "type": "string",
          "description": "Last name of the user. Optional. Null to leave unchanged."
        },
        "PhoneNumber": {
          "type": "string",
          "description": "Phone number of the user. Optional. Null to leave unchanged."
        },
        "Password": {
          "type": "string",
          "description": "Password for the user. Optional. Must be at least 12 characters long and include at least 3 of the following 4 character types: lowercase letter, uppercase letter, number, or special character (such as !@#$%^&*). The new password cannot match any password in the user's password history."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role identifiers to assign to this user. Optional. Replaces the existing list when provided."
        }
      },
      "description": "A request to partially update a user. Only provided fields are modified.",
      "required": [
        "Id"
      ]
    },
    "apiUserResponse": {
      "type": "object",
      "properties": {
        "Users": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/apiUserInstance"
          },
          "description": "List of user objects. Empty if no users exist."
        }
      }
    },
    "apiUserUpdate": {
      "type": "object",
      "properties": {
        "Id": {
          "type": "string",
          "description": "Unique identifier of the user. Required."
        },
        "Email": {
          "type": "string",
          "description": "Email address of the user. Required. Must be a valid email in RFC 5322 format.",
          "pattern": "^[A-Za-z0-9._+-]+@[A-Za-z0-9.-]+\\.[A-Za-za-z]{2,63}$"
        },
        "FirstName": {
          "type": "string",
          "description": "First name of the user. Required."
        },
        "LastName": {
          "type": "string",
          "description": "Last name of the user. Required."
        },
        "PhoneNumber": {
          "type": "string",
          "description": "Phone number of the user. Required."
        },
        "Password": {
          "type": "string",
          "description": "Password for the user. Required. Must be at least 12 characters long and include at least 3 of the following 4 character types: lowercase letter, uppercase letter, number, or special character (such as !@#$%^&*). The new password cannot match any password in the user's password history."
        },
        "Roles": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of role identifiers to assign to this user. Replaces the existing list."
        }
      },
      "description": "A request to replace all mutable fields of a user.",
      "required": [
        "Id",
        "Email",
        "Password",
        "FirstName",
        "LastName",
        "PhoneNumber"
      ]
    },
    "apiVersionInstance": {
      "type": "object",
      "properties": {
        "Semantic": {
          "type": "string",
          "description": "Full semantic version string of the build. Default: \"unset\"."
        },
        "Major": {
          "type": "string",
          "description": "Major version component. Default: \"unset\"."
        },
        "Minor": {
          "type": "string",
          "description": "Minor version component. Default: \"unset\"."
        },
        "Patch": {
          "type": "string",
          "description": "Patch version component. Default: \"unset\"."
        },
        "BuildTime": {
          "type": "string",
          "description": "Timestamp when the build was created (e.g., \"2018-10-16_15:39:54\")."
        }
      },
      "description": "Semantic version information for the application software."
    }
  },
  "x-resourceObjects": {
    "Account": "apiAccountResponse",
    "Application": "apiApplicationInstance",
    "DecoderType": "apiDecoderTypeInstance",
    "Device": "apiDeviceInstance",
    "DeviceGroup": "apiDeviceGroupInstance",
    "DeviceProfile": "apiDeviceProfileInstance",
    "MulticastGroup": "apiMulticastGroupNS",
    "Gateway": "apiGatewayInstance",
    "GatewayGroup": "apiGatewayGroupInstance",
    "GatewayProfile": "apiGatewayProfileInstance",
    "Logs": "apiLogInstance",
    "OutputProfile": "apiOutputProfileInstance",
    "RFRegion": "apiRFRegionInstance",
    "Role": "apiRoleInstance",
    "ServiceProfile": "apiServiceProfileInstance",
    "Users": "apiUserInstance",
    "Version": "apiVersionInstance"
  }
}
